SQL Server 2008 R2ログインを削除できません


8

数日前にSQL Serverログインを作成しました。今、私は同じものを削除する必要があります。そこで、SQL Server Management Studio => Security => Loginsに移動して、削除するログインを選択しました。それは言う情報メッセージを表示します

サーバーログインを削除しても、ログインに関連付けられているデータベースユーザーは削除されません。プロセスを完了するには、各データベースのユーザーを削除します。最初にスキーマの所有権を新しいユーザーに譲渡する必要があるかもしれません。

このメッセージを無視して、削除プロセスを確認すると、次のような致命的なエラーが発生します。

ログイン「iis_login」のドロップに失敗しました。(Microsoft.SqlServer.Smo)

Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。(Microsoft.SqlServer.ConnectionInfo)

このログインは1個のジョブの所有者です。ログインを削除する前に、これらのジョブを削除または再割り当てする必要があります。(Microsoft SQL Server、エラー:15170)

ログインによって所有されているジョブ(上記のメッセージによる)があるときに、ログインを削除するにはどうすればよいですか。

よろしく、Nirvan。


ログインを削除する前に、ジョブの所有権を変更するか、ジョブを削除する必要があります。
アダムウェンガー

回答:


13

多くのジョブがあり、このログインが所有するジョブがわからない場合、次のクエリは、それらが所有するジョブの名前を通知します。

SELECT j.name
FROM msdb.dbo.sysjobs AS j
INNER JOIN sys.syslogins AS l ON j.owner_sid = l.sid
WHERE l.name = 'loginYouWantToDelete'

ジョブを見つけたら、次を使用して削除できますsp_delete_job:(MSDNから)

EXEC msdb.dbo.sp_delete_job
    @job_name = N'JobToDelete';

私は今あなたのクエリでジョブを見ます。これは、Asp.Netがセッションを管理するために作成したジョブです。ASP.netがセッションの管理に使用していたデータベースは既に削除しています。だから今、そのジョブを削除したいと思います。残念ながら、Management StudioのExpressバージョンを実行していますが、SQL Serverエージェントがオブジェクトエクスプローラーにリストされていません。ジョブを削除するにはどうすればよいですか?

1
ジョブを削除する方法を含めるように回答を更新しました。
アダムウェンガー

アダムに感謝します。ジョブを削除してログインしました。

問題ありません。お手伝いできてうれしいです。
アダムウェンガー

2

ジョブの所有者を別のログインに設定する必要があります。ジョブのプロパティを見ると、所有者が誰であるかがわかります。これを別のログインに変更するだけです。

ジョブの所有者を変更するT-SQLは次のとおりです。

use msdb
go

exec sp_update_job @job_name= 'Your Job Name', 
@owner_login_name= 'Your New Job Owner'
go

ドロップしようとしているログインにマップされているデータベースユーザーについては、データベースユーザーとそのセキュリティコンテキストを保持したい場合は、次のようにしてください。

alter user YourDbUser 
with login = TheLoginThatYouWantTheUserToBeMappedTo

+1は、ユーザーの再マッピングと一般的な適切な回答を支援します。いい仕事のサメ、いつものように見えます:)
Adam Wenger

@AdamWengerありがとうございます!ログインが所有するジョブを見つけるクエリが好きです。+1!
トーマス・ストリンガー、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.