studio - sql server是什麼




用於創建新用戶的SQL Server腳本 (4)

我想編寫一個腳本來在SQL Server Express中創建一個admin用戶(帶有abcd密碼)。 另外,我想為此用戶分配admin完整權限。


在過去的一周裡,我在我的開發盒上安裝了Microsoft SQL Server 2014 Developer Edition,並立即遇到了我以前從未見過的問題。

我已經無數次安裝了各種版本的SQL Server,它通常是一個無痛的過程。 安裝服務器,運行管理控制台,就這麼簡單。 但是,完成此安裝後,當我嘗試使用SSMS登錄服務器時,出現如下錯誤:

SQL Server登錄錯誤18456“用戶登錄失敗...(Microsoft SQL Server,錯誤:18456)”如果我在登錄時鍵入了錯誤的密碼,我習慣看到此錯誤 - 但這只是在我使用混合模式時( Windows和SQL身份驗證)。 在這種情況下,服務器僅設置了Windows身份驗證,用戶帳戶是我自己的。 我還不確定為什麼在安裝過程中沒有將我的用戶添加到SYSADMIN角色; 也許我錯過了一步,忘記添加它。 無論如何,並非所有希望都失去了。

如果您無法使用任何其他帳戶登錄到SQL Server,解決此問題的方法是通過命令行界面添加您的網絡登錄。 為此,您需要成為Windows上的管理員才能登錄到您的PC。

停止MSSQL服務。 使用“以管理員身份運行”打開命令提示符。 切換到包含SQL Server EXE文件的文件夾; SQL Server 2014的默認設置是“C:\ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ Binn”。 運行以下命令:“sqlservr.exe -m”。 這將以單用戶模式啟動SQL Server。 在打開此命令提示符的同時打開另一個命令提示符,重複步驟2和3.在第二個命令提示符窗口中,運行“SQLCMD -S Server_Name \ Instance_Name”在此窗口中,運行以下行,在每個行之後按Enter鍵:1

CREATE LOGIN [domainName \ loginName] FROM WINDOWS 2 GO 3 SP_ADDSRVROLEMEMBER'LOGIN_NAME','SYSADMIN'4 GO使用CTRL + C結束命令提示符窗口中的兩個進程; 系統將提示您按Y鍵結束SQL Server進程。

重新啟動MSSQL服務。 而已! 您現在應該可以使用您的網絡登錄進行登錄。


基於您的問題,我認為您可能對用戶登錄之間的區別感到有些困惑。 登錄是SQL Server上的一個帳戶 - 一個能夠登錄服務器並且有密碼的人。 用戶是可以訪問特定數據庫的登錄

創建登錄很簡單,必須(顯然)在為特定數據庫中的登錄創建用戶帳戶之前完成:

CREATE LOGIN NewAdminName WITH PASSWORD = 'ABCD'
GO

以下是使用剛剛聲明的Login創建具有db_owner權限的用戶的方法:

Use YourDatabase;
GO

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'NewAdminName')
BEGIN
    CREATE USER [NewAdminName] FOR LOGIN [NewAdminName]
    EXEC sp_addrolemember N'db_owner', N'NewAdminName'
END;
GO

現在, 登錄比我看起來更加流暢。 例如,安裝數據庫時,將自動為Windows Administrator帳戶創建登錄帳戶(在大多數SQL Server安裝中)。 在大多數情況下,我只是在管理數據庫時使用它(它具有所有權限)。

但是,如果您要從應用程序訪問SQL Server,則需要將服務器設置為“混合模式”(Windows和SQL登錄)並創建登錄,如上所示。 然後,您將根據應用程序所需的內容“授予”SQL登錄的權限。 有關更多信息,請參見here

更新:Aaron指出使用sp_addsrvrolemember為您的登錄帳戶分配一個準備好的角色。 這是一個好主意 - 比手動授予權限更快更容易。 如果你google它,你會看到很多鏈接。 但是,您仍必須了解登錄和用戶之間的區別。


您可以使用:

CREATE LOGIN <login name> WITH PASSWORD = '<password>' ; GO 

創建登錄(有關詳細信息,請參見here )。

那你可能需要使用:

CREATE USER user_name 

要創建與特定數據庫的登錄關聯的用戶,您也要授予他們訪問權限。

(詳見here

您還可以使用:

GRANT permission  [ ,...n ] ON SCHEMA :: schema_name

設置您為用戶分配的架構的權限。

(詳見here

您可能會發現另外兩個有用的命令是ALTER USERALTER LOGIN


整個服務器或特定數據庫的完全管理員權限? 我認為其他人回答了數據庫,但對於服務器:

USE [master];
GO
CREATE LOGIN MyNewAdminUser 
    WITH PASSWORD    = N'abcd',
    CHECK_POLICY     = OFF,
    CHECK_EXPIRATION = OFF;
GO
EXEC sp_addsrvrolemember 
    @loginame = N'MyNewAdminUser', 
    @rolename = N'sysadmin';

您可能需要取消CHECK_參數,具體取決於您使用的SQL Server Express版本(在您的問題中包含此信息幾乎總是有用的)。





database