データベースが特定の基準を満たしたときにアーカイブ用にデータベースを切り離すスクリプトがあります。スクリプトは、Ghost of DBAPastによってローカル管理者アカウントでSSISによって実行されます。設計上、(これは一般的にデータベースをデタッチすることを意味します)他のすべての所有権を削除し、所有権をローカル管理者アカウント専用にします。ここが奇妙になるところです:
次の2つの方法を除いて、権限を元に戻すことはできないようです。
私が仕事に就けないこと:
所有権が変更される理由は理解できますが、後でアクセス許可を編集するのがそれほど難しい理由や、ファイルがコマンドラインツールから本質的に隠されているように見える理由は理解できません。
変更の理由は、何らかの理由でデータをテープに転送する前にオンラインに戻す必要がある場合があり、最初にアクセス許可を変更せずにデータベースを接続できないためです。
ありがとう
データベースサーバーでトレースフラグ1802を有効にする必要があります。これにより、データベースをデタッチするときにSQL Serverが継承可能なアクセス許可を保持できるようになるため、今後この問題が発生することはありません。
http://support2.Microsoft.com/kb/922804
DBCC TRACEON(1802、-1)
SQL Serverサービスの起動パラメーターに追加します http://msdn.Microsoft.com/en-us/library/ms190737(v = sql.110).aspx
多分これはあなたの質問への答えではありませんが、私はそれが関連していると信じています。できればコメントを書きますが、使用した写真とスクリプトを追加したいと思います。
以前と同じ問題が発生しました。データベースを再接続しようとすると、次のエラーメッセージが表示されました。
これを整理する方法は、データベースをデタッチするために使用されるログインを偽装してから、次のコマンドを実行することでした。DB所有者をすぐに変更することに注意してください。
USE [master]
GO
CREATE DATABASE [DEOrderArchive] ON
( FILENAME = N'Y:\SQLDATA\REP\DEOrderArchive.mdf' ),
( FILENAME = N'Z:\SQLLogs\REP\DEOrderArchive.ldf' )
FOR ATTACH
GO
USE [DEOrderArchive]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO