Healthcheck needed on a script | SQL Server Performance Forums

SQL Server Performance Forum – Threads Archive

Healthcheck needed on a script

Hi, can anyone tell me how the errors can be fixed on this script??<br /><br />Errors:<br /><br /><br />The CREATE DATABASE process is allocating 0.75 MB on disk ‘aspstate’.<br />The CREATE DATABASE process is allocating 0.49 MB on disk ‘aspstate_log’.<br />Server: Msg 15175, Level 16, State 1, Procedure sp_droplogin, Line 93<br />Login ‘usraspstate’ is aliased or mapped to a user in one or more database(s). Drop the user or alias before dropping the login.<br /><br />Server: Msg 15008, Level 16, State 1, Procedure sp_dropuser, Line 12<br />User ‘usraspstate’ does not exist in the current database.<br />Granted database access to ‘usraspstate’.<br />’usraspstate’ added to role ‘db_datareader’.<br />’usraspstate’ added to role ‘db_datawriter’.<br />’usraspstate’ added to role ‘db_owner’.<br /><br />(1 row(s) affected)<br /><br />Type added.<br /><br />(1 row(s) affected)<br /><br />Type added.<br /><br />(1 row(s) affected)<br /><br />Type added.<br /><br />(1 row(s) affected)<br /><br />Type added.<br /><br />(1 row(s) affected)<br /><br />Type added.<br />Server: Msg 2714, Level 16, State 6, Line 7<br />There is already an object named ‘ASPStateTempSessions’ in the database.<br />Cannot add rows to sysdepends for the current stored procedure because it depends on the missing object ‘CreateTempTables’. The stored procedure will still be created.<br />Server: Msg 15025, Level 16, State 1, Procedure sp_addlogin, Line 57<br />The login ‘usraspstate’ already exists.<br />’usraspstate’ added to role ‘db_datareader’.<br />’usraspstate’ added to role ‘db_datawriter’.<br /><br /><br />And here’s the script, a tad long….<br /><br />/*****************************************************************************/<br />/*This script is called by a Startup Stored Procedure in the Master Database */ <br />/*to enable session state for usraspstate in the aspstate database. */<br />/*The startup stored procedure is called aspstate_reinstate. */<br />/*King David 22/06/2004. */<br />/*****************************************************************************/<br /><br />/*************************************************************/<br />/*Drop & destroy the exisiting aspstate database completely. */<br />/*************************************************************/<br /><br />IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N’aspstate’)<br /> DROP DATABASE [aspstate]<br />GO<br /><br />/****************************************************************************/<br />/*Create the new database, using the default model, therefore no file names */<br />/*required or collation required, or individual objects to be destroyed. */<br />/****************************************************************************/<br /><br />CREATE DATABASE aspstate<br />GO<br /><br />/*******************************/<br />/*Set the database properties. */<br />/*******************************/<br /><br />exec sp_dboption N’aspstate’, N’autoclose’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’bulkcopy’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’trunc. log’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’torn page detection’, N’true'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’read only’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’dbo use’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’single’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’autoshrink’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’ANSI null default’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’recursive triggers’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’ANSI nulls’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’concat null yields null’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’cursor close on commit’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’default to local cursor’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’quoted identifier’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’ANSI warnings’, N’false'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’auto create statistics’, N’true'<br />GO<br /><br />exec sp_dboption N’aspstate’, N’auto update statistics’, N’true'<br />GO<br /><br />if( ( (@@microsoftversion / power(2, 24) = <img src=’/community/emoticons/emotion-11.gif’ alt=’8)’ /> and (@@microsoftversion & 0xffff &gt;= 724) ) or ( (@@microsoftversion / power(2, 24) = 7) and (@@microsoftversion & 0xffff &gt;= 1082) ) )<br /> exec sp_dboption N’aspstate’, N’db chaining’, N’false'<br />GO<br /><br />/*********************************************************/<br />/*Ensure all activity is carried out in the aspstate db. */<br />/*********************************************************/<br /><br />use aspstate<br />go<br /><br />/*********************************/<br />/* Destroy the user usraspstate. */<br />/*********************************/<br /><br />exec sp_droplogin ‘usraspstate'<br />go<br /><br />exec sp_dropuser ‘usraspstate'<br />go<br /><br /><br />/**************************/<br />/*Create the usraspstate usr. */<br />/**************************/<br /><br />if not exists (select * from master.dbo.syslogins where loginname = N’usraspstate’)<br />BEGIN<br /> declare @logindb nvarchar(132), @loginlang nvarchar(132) <br /> <br /> select @logindb = N’aspstate’, @loginlang = N’us_english'<br /> <br /> if @logindb is null or not exists (select * from master.dbo.sysdatabases where name = @logindb)<br /><br />/************************************/<br />/*Default to the aspstate database. */<br />/************************************/<br /><br /> select @logindb = N’aspstate'<br /> <br /> if @loginlang is null or (not exists (select * from master.dbo.syslanguages where name = @loginlang) and @loginlang &lt;&gt; N’us_english’)<br /> <br /> select @loginlang = @@language<br /><br /> exec sp_addlogin N’usraspstate’, ‘usraspstate’, @logindb, @loginlang<br /> END<br />GO<br /><br /> <br /><br /><br />/*************************/<br />/*Grant database access. */<br />/*************************/<br /><br />if not exists (select * from dbo.sysusers where name = N’usraspstate’ and uid &lt; 16382)<br /><br /> EXEC sp_grantdbaccess N’usraspstate’, N’usraspstate'<br /><br />GO<br /><br />/******************************/<br />/*Grant the role permissions. */<br />/******************************/<br /><br />exec sp_addrolemember N’db_datareader’, N’usraspstate'<br />GO<br /><br />exec sp_addrolemember N’db_datawriter’, N’usraspstate'<br />GO<br /><br />/*********************************************/<br />/* Ensure usraspstate is the database owner. */<br />/*********************************************/<br /><br />sp_addrolemember ‘db_owner’,’usraspstate'<br /><br />go<br /><br />se tuser<br />GO<br /><br />/***********************************/<br />/*Add the user defined data types. */<br />/***********************************/<br /><br />EXEC sp_addtype N’tAppName’, N’varchar (280)’, N’not null'<br />GO<br /><br />setuser<br />GO<br /><br />setuser<br />GO<br /><br />EXEC sp_addtype N’tSessionId’, N’char (32)’, N’not null'<br />GO<br /><br />setuser<br />GO<br /><br />setuser<br />GO<br /><br />EXEC sp_addtype N’tSessionItemLong’, N’image’, N’null'<br />GO<br /><br />setuser<br />GO<br /><br />setuser<br />GO<br /><br />EXEC sp_addtype N’tSessionItemShort’, N’varbinary (7000)’, N’null'<br />GO<br /><br />setuser<br />GO<br /><br />setuser<br />GO<br /><br />EXEC sp_addtype N’tTextPtr’, N’varbinary (16)’, N’null'<br />GO<br /><br />setuser<br />GO<br /><br />/*****************************************************/<br />/* create the tempdb table objects. */<br />/* creation takes place in the usraspstate database. */<br />/*****************************************************/<br /><br />CREATE TABLE tempdb..ASPStateTempSessions (<br /> SessionId CHAR(32) NOT NULL PRIMARY KEY,<br /> Created DATETIME NOT NULL DEFAULT GETDATE(),<br /> Expires DATETIME NOT NULL,<br /> LockDate DATETIME NOT NULL,<br /> LockCookie INT NOT NULL,<br /> Timeout INT NOT NULL,<br /> Locked BIT NOT NULL,<br /> SessionItemShort VARBINARY(7000) NULL,<br /> SessionItemLong IMAGE NULL,<br /> ) <br /><br /> CREATE TABLE tempdb..ASPStateTempApplications (<br /> AppId INT NOT NULL IDENTITY PRIMARY KEY,<br /> AppName CHAR(280) NOT NULL,<br /> ) <br /><br /> CREATE NONCLUSTERED INDEX Index_AppName ON tempdb..ASPStateTempApplications(AppName)<br /><br />go<br /><br />CREATE PROCEDURE DeleteExpiredSessions<br />AS<br /> DECLARE @now DATETIME<br /> SET @now = GETDATE()<br /><br /> DELETE tempdb..aspstateTempSessions<br /> WHERE Expires &lt; @now<br /><br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[DeleteExpiredSessions] TO [usraspstate]<br />GO<br /><br /><br />CREATE PROCEDURE DropTempTables<br />AS<br /> IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE name = ‘aspstateTempSessions’ AND type = ‘U’) BEGIN<br /> DROP TABLE tempdb..aspstateTempSessions<br /> END<br /><br /> IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE name = ‘aspstateTempApplications’ AND type = ‘U’) BEGIN<br /> DROP TABLE tempdb..aspstateTempApplications<br /> END<br /><br /> RETURN 0<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[DropTempTables] TO [usraspstate]<br />GO<br /><br /><br />CREATE PROCEDURE ResetData<br />AS<br /> EXECUTE DropTempTables<br /> EXECUTE CreateTempTables<br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[ResetData] TO [usraspstate]<br />GO<br /><br />CREATE PROCEDURE TempGetAppId<br /> @appName tAppName,<br /> @appId INT OUTPUT<br />AS<br /> SELECT @appId = AppId<br /> FROM tempdb..aspstateTempApplications<br /> WHERE AppName = @appName<br /><br /> IF @appId IS NULL BEGIN<br /> INSERT tempdb..aspstateTempApplications<br /> (AppName)<br /> VALUES<br /> (@appName)<br /><br /> SELECT @appId = AppId<br /> FROM tempdb..aspstateTempApplications<br /> WHERE AppName = @appName<br /> END<br /><br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[TempGetAppId] TO [usraspstate]<br />GO<br /><br />CREATE PROCEDURE TempGetStateItem<br /> @id tSessionId,<br /> @itemShort tSessionItemShort OUTPUT,<br /> @locked BIT OUTPUT,<br /> @lockDate DATETIME OUTPUT,<br /> @lockCookie INT OUTPUT<br />AS<br /> DECLARE @textptr AS tTextPtr<br /> DECLARE @length AS INT<br /> DECLARE @now as DATETIME<br /> SET @now = GETDATE()<br /><br /> UPDATE tempdb..aspstateTempSessions<br /> SET Expires = DATEADD(n, Timeout, @now), <br /> @locked = Locked,<br /> @lockDate = LockDate,<br /> @lockCookie = LockCookie,<br /> @itemShort = CASE @locked<br /> WHEN 0 THEN SessionItemShort<br /> ELSE NULL<br /> END,<br /> @textptr = CASE @locked<br /> WHEN 0 THEN TEXTPTR(SessionItemLong)<br /> ELSE NULL<br /> END,<br /> @length = CASE @locked<br /> WHEN 0 THEN DATALENGTH(SessionItemLong)<br /> ELSE NULL<br /> END<br /> WHERE SessionId = @id<br /> IF @length IS NOT NULL BEGIN<br /> READTEXT tempdb..aspstateTempSessions.SessionItemLong @textptr 0 @length<br /> END<br /><br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[TempGetStateItem] TO [usraspstate]<br />GO<br /><br />CREATE PROCEDURE TempGetStateItemExclusive<br /> @id tSessionId,<br /> @itemShort tSessionItemShort OUTPUT,<br /> @locked BIT OUTPUT,<br /> @lockDate DATETIME OUTPUT,<br /> @lockCookie INT OUTPUT<br />AS<br /> DECLARE @textptr AS tTextPtr<br /> DECLARE @length AS INT<br /> DECLARE @now as DATETIME<br /><br /> SET @now = GETDATE()<br /> UPDATE tempdb..aspstateTempSessions<br /> SET Expires = DATEADD(n, Timeout, @now), <br /> @lockDate = LockDate = CASE Locked<br /> WHEN 0 THEN @now<br /> ELSE LockDate<br /> END,<br /> @lockCookie = LockCookie = CASE Locked<br /> WHEN 0 THEN LockCookie + 1<br /> ELSE LockCookie<br /> END,<br /> @itemShort = CASE Locked<br /> WHEN 0 THEN SessionItemShort<br /> ELSE NULL<br /> END,<br /> @textptr = CASE Locked<br /> WHEN 0 THEN TEXTPTR(SessionItemLong)<br /> ELSE NULL<br /> END,<br /> @length = CASE Locked<br /> WHEN 0 THEN DATALENGTH(SessionItemLong)<b r /> ELSE NULL<br /> END,<br /> @locked = Locked,<br /> Locked = 1<br /> WHERE SessionId = @id<br /> IF @length IS NOT NULL BEGIN<br /> READTEXT tempdb..aspstateTempSessions.SessionItemLong @textptr 0 @length<br /> END<br /><br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[TempGetStateItemExclusive] TO [usraspstate]<br />GO<br /><br />CREATE PROCEDURE TempInsertStateItemLong<br /> @id tSessionId,<br /> @itemLong tSessionItemLong,<br /> @timeout INT<br />AS <br /> DECLARE @now as DATETIME<br /> SET @now = GETDATE()<br /><br /> INSERT tempdb..aspstateTempSessions <br /> (SessionId, <br /> SessionItemLong, <br /> Timeout, <br /> Expires, <br /> Locked, <br /> LockDate,<br /> LockCookie) <br /> VALUES <br /> (@id, <br /> @itemLong, <br /> @timeout, <br /> DATEADD(n, @timeout, @now), <br /> 0, <br /> @now,<br /> 1)<br /><br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[TempInsertStateItemLong] TO [usraspstate]<br />GO<br /><br />CREATE PROCEDURE TempInsertStateItemShort<br /> @id tSessionId,<br /> @itemShort tSessionItemShort,<br /> @timeout INT<br />AS <br /><br /> DECLARE @now as DATETIME<br /> SET @now = GETDATE()<br /><br /> INSERT tempdb..aspstateTempSessions <br /> (SessionId, <br /> SessionItemShort, <br /> Timeout, <br /> Expires, <br /> Locked, <br /> LockDate,<br /> LockCookie) <br /> VALUES <br /> (@id, <br /> @itemShort, <br /> @timeout, <br /> DATEADD(n, @timeout, @now), <br /> 0, <br /> @now,<br /> 1)<br /><br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[TempInsertStateItemShort] TO [usraspstate]<br />GO<br /><br />CREATE PROCEDURE TempReleaseStateItemExclusive<br /> @id tSessionId,<br /> @lockCookie INT<br />AS<br /> UPDATE tempdb..aspstateTempSessions<br /> SET Expires = DATEADD(n, Timeout, GETDATE()), <br /> Locked = 0<br /> WHERE SessionId = @id AND LockCookie = @lockCookie<br /><br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[TempReleaseStateItemExclusive] TO [usraspstate]<br />GO<br /><br /><br />CREATE PROCEDURE TempRemoveStateItem<br /> @id tSessionId,<br /> @lockCookie INT<br />AS<br /> DELETE tempdb..aspstateTempSessions<br /> WHERE SessionId = @id AND LockCookie = @lockCookie<br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[TempRemoveStateItem] TO [usraspstate]<br />GO<br /><br /><br />CREATE PROCEDURE TempResetTimeout<br /> @id tSessionId<br />AS<br /> UPDATE tempdb..aspstateTempSessions<br /> SET Expires = DATEADD(n, Timeout, GETDATE())<br /> WHERE SessionId = @id<br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[TempResetTimeout] TO [usraspstate]<br />GO<br /><br />CREATE PROCEDURE TempUpdateStateItemLong<br /> @id tSessionId,<br /> @itemLong tSessionItemLong,<br /> @timeout INT,<br /> @lockCookie INT<br />AS <br /> UPDATE tempdb..aspstateTempSessions<br /> SET Expires = DATEADD(n, Timeout, GETDATE()), <br /> SessionItemLong = @itemLong,<br /> Timeout = @timeout,<br /> Locked = 0<br /> WHERE SessionId = @id AND LockCookie = @lockCookie<br /><br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[TempUpdateStateItemLong] TO [usraspstate]<br />GO<br /><br />CREATE PROCEDURE TempUpdateStateItemLongNullShort<br /> @id tSessionId,<br /> @itemLong tSessionItemLong,<br /> @timeout INT,<br /> @lockCookie INT<br />AS <br /> UPDATE tempdb..aspstateTempSessions<br /> SET Expires = DATEADD(n, Timeout, GETDATE()), <br /> SessionItemLong = @itemLong, <br /> SessionItemShort = NULL,<br /> Timeout = @timeout,<br /> Locked = 0<br /> WHERE SessionId = @id AND LockCookie = @lockCookie<br /><br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[TempUpdateStateItemLongNullShort] TO [usraspstate]<br />GO<br /><br />CREATE PROCEDURE TempUpdateStateItemShort<br /> @id tSessionId,<br /> @itemShort tSessionItemShort,<br /> @timeout INT,<br /> @lockCookie INT<br />AS <br /> UPDATE tempdb..aspstateTempSessions<br /> SET Expires = DATEADD(n, Timeout, GETDATE()), <br /> SessionItemShort = @itemShort, <br /> Timeout = @timeout,<br /> Locked = 0<br /> WHERE SessionId = @id AND LockCookie = @lockCookie<br /><br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[TempUpdateStateItemShort] TO [usraspstate]<br />GO<br /><br />CREATE PROCEDURE TempUpdateStateItemShortNullLong<br /> @id tSessionId,<br /> @itemShort tSessionItemShort,<br /> @timeout INT,<br /> @lockCookie INT<br />AS <br /> UPDATE tempdb..aspstateTempSessions<br /> SET Expires = DATEADD(n, Timeout, GETDATE()), <br /> SessionItemShort = @itemShort, <br /> SessionItemLong = NULL, <br /> Timeout = @timeout,<br /> Locked = 0<br /> WHERE SessionId = @id AND LockCookie = @lockCookie<br /><br /> RETURN 0<br /><br />GO<br /><br />/**********************************/<br />/* Grant usraspstate permissions. */<br />/**********************************/<br /><br />GRANT EXECUTE ON [dbo].[TempUpdateStateItemShortNullLong] TO [usraspstate]<br />GO<br /><br />/********************************************************/<br />/* Grant usraspstate permissions on the tempdb objects. */<br />/********************************************************/<br /><br />use tempdb<br />go<br /><br />if not exists (select * from dbo.sysusers where name = N’usraspstate’ and uid &lt; 16382)<br /> EXEC sp_grantdbaccess N’usraspstate’, N’usraspstate'<br />GO<br /><br />exec sp_addlogin ‘usraspstate’,’usraspstate'<br />GO<br /><br />exec sp_addrolemember N’db_datareader’, N’usraspstate'<br />GO<br /><br />exec sp_addrolemember N’db_datawriter’, N’usraspstate'<br />GO<br /><br />GRANT SELECT , UPDATE , INSERT , DELETE ON [dbo].[ASPStateTempApplications] TO [usraspstate]<br />GO<br /><br />GRANT SELECT , UPDATE , INSERT , DELETE ON [dbo].[ASPStateTempSessions] TO [usraspstate]<br />GO<br /><br />GRANT SELECT , UPDATE , INSERT , DELETE ON [dbo].[ASPStateTempApplications] TO [public]<br />GO<br /><br />GRANT SELECT , UPDATE , INSERT , DELETE ON [dbo].[ASPStateTempSessions] TO [public]<br />GO<br /><br />/************************************/<br />/*Now resize the .MDF & .LDF Files. */<br />/************************************/<br /><br />USE master<br />GO<br /><br />ALTER DATABASE aspstate <br />MODIFY FILE<br /> (NAME = ‘aspstate’,SIZE = 20MB)<br />GO<br /><br />ALTER DATABASE aspstate <br />MODIFY FILE<br /> (NAME = ‘aspstate_log’,SIZE = 5MB)<br />GO<br /><br />/*******/<br />/*DONE */<br />/*******/<br /><br /><br /><br />France.<br /><br />The finest wines.<br /><br />The tastiest cuisine.<br /><br />The most delicious women.
KBAhttp://support.microsoft.com/kb/223999 Satya SKJ
Microsoft SQL Server MVP
Contributing Editor & Forums Moderator
http://www.SQL-Server-Performance.Com
This posting is provided AS IS with no rights for the sake of knowledge sharing.
]]>