Известная ошибка при попытке редактирования пакетов DTS:
описана здесь, но в статье две ссылки – Microsoft SQL Server 2008 Feature Pack page и Feature Pack for Microsoft SQL Server 2005 page.
Microsoft SQL Server 2005 Backward Compatibility Components доступен по обеим ссылкам, но версия только по второй будет работать с 2008R2 (несмотря на то, что дата релиза Feature Pack указана более ранняя).
Кроме того, здесь, в первом комментарии указаны правильные пути копирования *.dll и *.rll файлов.
В SSMS 2012 управление DTS пакетами больше не поддерживается.
При миграции БД с SQL Server 2000 на SQL Server 2005 выяснилось, что строка
RAISERROR ('test error %S', 16, 1, @test)
из-за неверно написанного %S вместо %s в SQL Server 2000 работает просто неверно (возвращает только первый символ параметра), а в SQL Server 2005 не создает процедуру совсем:
Msg 2787, Level 16, State 1, Line 6
Invalid format specification: ‘%S’.
Т.к. такое написание могло встретиться в любой процедуре, найдем их все:
SELECT name FROM sys.procedures WHERE CHARINDEX ( '%S', OBJECT_DEFINITION(object_id) COLLATE Latin1_General_CS_AS) >0
После исправления RAISERROR работает правильно.
На одном из серверов SQL Server 2005 при попытке открыть свойства БД через GUI видим:
Действительно, определить владельца БД не удается:
select owner_sid, suser_sname(owner_sid) from sys.databases where name='model'
owner_sid | owner name |
0x010500000000000515000000B92ACD62A473F62D825A8A49A3780000 | NULL |
Вероятно, это был доменный пользователь, которого больше нет в AD.
Изменить владельца процедурой sp_changedbowner в БД model нельзя:
use model; EXEC sp_changedbowner 'sa'
Msg 15109, Level 16, State 1, Line 1
Cannot change the owner of the master, model, tempdb or distribution database.
Можно поменять sid непосредственно в системной таблице, как описано здесь, но это, действительно, нерекомендуемый MS путь.
Так что воспользуемся тем, что при присоединении любой БД её владельцем становится текущий пользователь, и, запустив SQL Server с ключом /T3608, выполним из-под сессии пользователя sa:
EXEC master.dbo.sp_detach_db @dbname = N'model' GO CREATE DATABASE [model] ON ( FILENAME = N'E:\DATA\model.mdf' ), ( FILENAME = N'E:\DATA\modellog.ldf' ) FOR ATTACH GO
Перезапустим SQL Server, убеждаемся:
select owner_sid, suser_sname(owner_sid) 'owner name' from sys.databases where name='model'
owner_sid | owner name |
0x01 | sa |
Если есть возможность, можно открыть порты для службы SQL Server Browser, перечисленные здесь.
Если нет, нужно создать алиас или просто подключаться, указывая порт в строке подключения:
где именованный инстанс INSTANCENAME работает по порту 1453.
Версия ОС: Windows Server 2008R2 EE x64
Версия SQL Server: SQL Server 2008R2 x64 SP1
Из-за неизвестной ошибки провайдера “Oracle provider for OLE DB” два раза подряд перезапустился сервис SQL Server, запись в логе приложений:
01:46:12 PM Information SERVERNAME.domain.a 1001 Windows Error Reporting N/A N/A Fault bucket , type 0 Event Name: APPCRASH Response: Not available Cab Id: 0 Problem signature: P1: sqlservr.exe P2: 2009.100.2500.0 P3: 4dfb6221 P4: StackHash_6d63 P5: 6.1.7601.17725 P6: 4ec4aa8e P7: c0000374 P8: 00000000000c40f2 P9: P10: Attached files: C:\Users\username\AppData\Local\Temp\WERC049.tmp.appcompat.txt C:\Users\username\AppData\Local\Temp\WERCB13.tmp.WERInternalMetadata.xml C:\Users\username\AppData\Local\Temp\WERDDCA.tmp.mdmp C:\Users\username\AppData\Local\Temp\WERE22E.tmp.WERDataCollectionFailure.txt These files may be available here: C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_sqlservr.exe_acc33c1fca791edc578ecac2be501126d4755535_cab_64a1e249 Analysis symbol: Rechecking for solution: 0 Report Id: 15cbe2fd-ae2a-11e1-a618-3c4a927b0a88 Report Status: 0
01:46:12 PM Error SERVERNAME.domain.a 19019 MSSQL$SQL1 Server N/A The MSSQL$SQL1 service terminated unexpectedly.
Причина перезагрузки SQL Server – это ошибка доступа (access violation AV) – повреждение кучи (heap corruption):
STACK_TEXT:
00000000`00000000 00000000`00000000 oraoledbutl10!Unknown+0x0
FAILURE_BUCKET_ID: ACTIONABLE_HEAP_CORRUPTION_heap_failure_block_not_busy_AFTER_CALL_c0000374_OraOLEDButl10.dll
Чтобы исключить подобное в будущем, убираем свойство “allow in process” провайдера Oracle, чтобы провайдер для линкованного сервера Oracle работал вне процесса SQL Server:
Далее, в соответствии с этой статьей, настраиваем доступ к MSDAINITIALIZE.
Теперь ошибка провайдера “Oracle provider for OLE DB” не повлечет за собой перезапуск службы SQL Server.