Есть код на C#, создающий бекап базы в виде SQL-скриптов, скрипт созданный для баз данных на MSSQL 2000 работает восстанавливается как на 2000-ом,так и на 2005-ом сервере. Однако скрипт созданный для базы 2005-го падает когда дело доходит до восстановления логинов падает вот с тако ошибкой: "Invalid value given for parameter PASSWORD. Specify a valid parameter value.". Есть подозрение что дело в том как я читаю скрипт, т.к. SSMSEE нормально его выполняет. Чтение и запись выполняется в кодировке UTF-16BE, вот примеры создания ридера и райтера
using (StreamReader reader = new StreamReader(fileName, Encoding.BigEndianUnicode))
...
using (StreamWriter writer = new StreamWriter(file, Encoding.BigEndianUnicode))
...
Никто не сталкивался с подобной проблемой? На всякий случай пример скрипта, который генерится для логина:
use [mydb]
GO
if not exists (select * from master.dbo.syslogins where loginname = N'user1')
BEGIN
declare @logindb nvarchar(132), @loginlang nvarchar(132) select @logindb = N'mydb', @loginlang = N'us_english'
if @logindb is null or not exists (select * from master.dbo.sysdatabases where name = @logindb)
select @logindb = N'master'
if @loginlang is null or (not exists (select * from master.dbo.syslanguages where name = @loginlang) and @loginlang <> N'us_english')
select @loginlang = @@language
exec sp_addlogin N'user1', N'朤ԛ狟薹댬쵬㎐㫗꽄덖콎', @logindb, @loginlang, @sid=0x8D43C3C29FB50346AC075BD60583912C, @encryptopt=N'skip_encryption'
END
GO