Sql server SQL Server数据库附加类型

Sql server SQL Server数据库附加类型,sql-server,vb.net,vb.net-2010,Sql Server,Vb.net,Vb.net 2010,请看图片。我使用以下代码连接DBs 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' ), ( FI

请看图片。我使用以下代码连接DBs

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时,我发现我的附加数据库未在角色中检查(请参见图片)。

问题是我的网络计算机无法访问此数据库。我想运行上面的一些代码(不带sa密码),并希望我的所有网络计算机都可以访问数据库,而无需我的用户参与设置SSM。

在创建数据库时使用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组创建登录名,然后将整个组的映射分配给数据库