Экспорт данных из 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.

1
задан 28 January 2016 в 00:09
1 ответ

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

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

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

4
ответ дан 3 December 2019 в 17:37

Теги

Похожие вопросы