Назад | Перейти на главную страницу

Экспорт данных из Microsoft SQL Server

У меня есть приложение, использующее базу данных Microsoft SQL Server, работающую на ПК1.

Я установил это приложение на другом ПК (ПК2):

  1. Установил приложение на ПК2
  2. Приложение создает базу данных A на ПК2 (приложение работает)
  3. Я делаю резервную копию базы данных A на обоих ПК
  4. Я восстановил резервную копию базы данных A с ПК1 на ПК2.
  5. Приложение не работает. Не удается подключиться.
  6. Я восстановил резервную копию базы данных A с ПК2 на ПК2 (приложение работает)

Я думаю, что единственное, что может решить эту проблему, - это экспорт данных в файл SQL, но я не знаю, как это сделать.

Я использую Microsoft SQL Express 2005.

Я подозреваю, что твоя проблема осиротевшие пользователи. По сути, ваши пользователи и логины могут называться одинаково, но у них разные идентификаторы на разных экземплярах.

Вот скрипт, показывающий проблему (взят из ссылки):

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

Или вы можете просто исправить это. Для этого есть встроенная процедура. Восстановите базу данных с первого ПК на второй ПК и запустите:

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 для запуска этой команды на каждый база данных.)