从 Microsoft SQL Server 导出数据

从 Microsoft SQL Server 导出数据

我有一个使用在 PC1 上运行的数据库 Microsoft SQL Server 的应用程序。

我在另一台电脑(PC2)上设置了该应用程序:

  1. 我在PC2上安装了应用程序
  2. 应用程序在 PC2 上创建数据库 A(应用程序运行)
  3. 我在两台电脑上备份了数据库 A
  4. 我将数据库A的备份从PC1恢复到PC2。
  5. 应用程序无法运行。无法连接。
  6. 我将 PC2 的数据库 A 备份恢复到 PC2(应用程序正常运行)

我认为唯一能解决这个问题的方法是将数据导出到 SQL 文件,但我不知道该怎么做。

我正在使用 Microsoft SQL Express 2005。

答案1

我怀疑你的问题是孤立用户基本上,您的用户和登录名可能命名相同,但是在不同的实例上它们具有不同的 sid。

下面是一个显示问题的脚本(摘自链接):

USE MASTER
GO 
SELECT name as SQLServerLogIn,SID as SQLServerSID FROM sys.syslogins
WHERE [name] = 'YourAppUser'
GO

USE YourAppDB
GO 
SELECT name DataBaseID,SID as DatabaseSID FROM sysusers
WHERE [name] = 'YourAppUser'
GO

或者,您可以直接修复它。有一个内置程序可以解决此问题。将数据库从第一台 PC 恢复到第二台 PC 并运行:

USE YourAppDB
GO 
exec sp_change_users_login @action='update_one',@usernamepatter='YourAppUser',@loginname='YourAppUser'
GO

我曾经必须在大量数据库上运行它,所以我有:

execute sp_MSforeachdb 'USE [?]; exec sp_change_users_login @action=''update_one'',@usernamepattern=''YourAppUser'',@loginname=''YourAppUser'''

(这使用未记录的 sp_MSforeachdb 过程来运行该命令每一个数据库。)

相关内容