我試圖創建一個存儲過程來創建對我的數據庫的登錄和宏訪問。但是,當我在SQL文件中運行代碼和一個可以創建新的登錄,並登錄到SQL Server成功:創建登錄後,無法登錄並通過存儲過程授予對數據庫的訪問
Use DuLieuChuan
GO
CREATE LOGIN TestLogin WITH PASSWORD = '123456789',
DEFAULT_DATABASE=[master],
DEFAULT_LANGUAGE=[English],
CHECK_EXPIRATION=ON,
CHECK_POLICY=ON;
GO
CREATE USER db_TestLogin FROM LOGIN TestLogin;
GO
ALTER LOGIN TestLogin ENABLE;
但我創建一個存儲過程的代碼:
CREATE PROC [dbo].[addDBMSLogin]
(
@loginname nvarchar(100),
@password nchar(100)
)
AS
BEGIN
DECLARE @safe_login varchar(200)
DECLARE @safe_password varchar(200)
SET @safe_login = replace(@loginname,'''', '''''')
SET @safe_password = replace(@password,'''', '''''')
DECLARE @sql nvarchar(max)
SET @sql = 'CREATE LOGIN ' + @safe_login +
' WITH PASSWORD = ''' + @safe_password + ''', DEFAULT_DATABASE=[DuLieuChuan], DEFAULT_LANGUAGE=[English], CHECK_EXPIRATION=ON, CHECK_POLICY=ON ' +
'CREATE USER ' + @safe_login + ' FROM LOGIN ' + @safe_login + ';'
EXEC (@sql)
EXEC sys.sp_addsrvrolemember @loginame = @safe_login, @rolename = N'sysadmin';
SET @SQL = 'ALTER LOGIN ' + @safe_login + ' ENABLE';
EXECUTE(@SQL);
END
執行此過程後,我還可以創建一個新的登錄名,但我不能使用該登錄名登錄到SQL Server後續消息:
TITLE: Connect to Server
------------------------------
Cannot connect to *****.
------------------------------
ADDITIONAL INFORMATION:
Login failed for user 'test5'. (Microsoft SQL Server, Error: 18456)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=18456&LinkId=20476
------------------------------
你能幫助我,爲什麼?這是我的期末考試:)
非常感謝!
嘗試拆分兩個查詢的登錄和用戶創建查詢,並逐個執行它們 –
感謝Andy! 我嘗試了,但我仍然無法使用存儲過程創建的登錄名登錄:) –