簡體   English   中英

SQL Server數據庫附加類型

[英]SQL Server Database attaching types

請看圖片。 我正在使用以下代碼附加數據庫。

Dim conn As New SqlConnection("Server=MyHomeServer\SQLExpress;Database=master;Integrated Security=SSPI")
    Dim cmd As New SqlCommand("", conn)
    cmd.CommandText = "CREATE DATABASE dbNoPWD ON ( FILENAME = 'd:\dbNoPWD.mdf' ), ( FILENAME = 'd:\dbNoPWD_log.ldf' ) FOR ATTACH"
    conn.Open()
    cmd.ExecuteNonQuery()
    cmd.Dispose()
    conn.Dispose()

請注意,我不想提供任何用戶名和密碼。

當我運行上面的代碼然后檢查SSMS時,我發現我的Attach DB沒有在Roles中檢查(請參見圖片)。
在此處輸入圖片說明 問題是我的網絡計算機無法訪問該數據庫。 我想運行上述類似的代碼(沒有sa密碼),並希望我的所有網絡計算機都可以訪問DB,而無需用戶參與設置SSMS。

創建數據庫時,在連接字符串中使用的是Windows身份驗證。 因此,如果您的ActiveDirector帳戶是JOE,則dbNoPWD數據庫的所有者將是JOE,而不是SA。 這就是為什么您的屏幕截圖顯示SA而不映射到dbNoPWD的原因。

但這是您的問題:SA的映射與其他SqlServer登錄名是否能夠訪問您的數據庫無關(除非它們屬於sysadmin服務器角色)。 每個SQLServer登錄名都必須具有自己的映射到您的新數據庫,否則他們將無法使用它。

因此,讓我們解決您的問題。 如果希望人們對新數據庫具有讀/寫訪問權限,請在數據庫創建語句后添加一些TSQL,以將用戶映射到新數據庫。 像這樣:

use dbNoPWD
go
exec sp_addrolemember db_datareader, SQLLOGINNAME
go
exec sp_addrolemember db_datawriter, SQLLOGINNAME
go

如果您有很多用戶,則可以使用一種更簡單的方法來為整個Windows組創建登錄名,然后將整個組的映射分配給數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM