1

MyDB我在 C#2010 中有一个应用程序,在 SQL Server 2008 R2 Express 中有一个数据库,在我开发应用程序的工作 PC 上连接到我的数据库没有任何问题。但是当我尝试在另一台 PC 上安装它时,并像这样配置我的服务器后:

USE [master] 
GO 

CREATE LOGIN [User1] WITH PASSWORD=N'Pass', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON 
GO 

EXEC master..sp_addsrvrolemember @loginame = N'User1', @rolename = N'sysadmin' 
GO 

EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2 
GO

RESTORE DATABASE [MyDB] FROM DISK = N'pathtoMyDB\MyDB.bak' WITH FILE = 1,
NOUNLOAD, STATS = 10 
GO

我运行应用程序,这是我的问题:当我尝试连接到 MyDB 时,我收到以下消息:

用户 'WIN-ELKPAS5MS2O\User1' 登录失败。原因:无法打开明确指定的数据库。[客户: ]

4

1 回答 1

0

您已经创建了一个登录名——这很好,但那是在服务器(实例)级别。登录名赋予此帐户/用户连接服务器的权限——不过,这只是第 1 步。

现在您正在恢复一个数据库——但您并没有在该数据库中创建与您刚刚创建的登录名相对应的用户。

所以在 之后RESTORE DATABASE,你还需要:

USE MyDB
GO

CREATE USER User1 FOR LOGIN User1;
GO 

现在,您在新恢复的数据库中有一个与该登录名对应的用户 - 现在,希望您的应用程序能够正常工作。

于 2012-12-24T10:48:33.660 回答