MSのドキュメント here に従って、説明されているプロセスの一部として、SQL Serverの1つのインスタンスから別のインスタンスにログインを移行します here 。これには、サーバーをシングルユーザーモード(これは私が行った)にして、スクリプトを実行するなどが含まれます。
ただし、シングルユーザーモードで再起動した後(SqlServerサービスのみが実行されている場合)、Windowsアカウントまたはsa
資格情報を使用してログインできません。エラーが発生します:
Failed to connect to <servername>
Login failed for user 'sa'. Reason: Server is in single user mode.
Only one administrator can connect at this time. (Microsoft SSQL Server, Error: 18461)
サーバーを通常どおり再起動した後(つまり、マルチユーザーモード)、すべてのログインが正常に機能します。
誰かが何が起こっているのか、および/またはこれを修正する方法を説明できますか?
これは、SSMSを使用して接続しようとしているためと考えられます。 SSMS内では、オブジェクトエクスプローラーはデータベースへの1つの接続を開きますが、後続の各クエリウィンドウはデータベースへの別の接続を開きます。
私が過去に行ったことは、SSMSを開いて、オブジェクトエクスプローラー経由でデータベースに接続せず、次の手順で専用管理者接続(DAC)クエリウィンドウを開きます。
これには、SQL Server Browserサービスが実行されている必要があります。
これらすべての本当の問題は、オブジェクトエクスプローラーがその「シングルユーザー」を使い果たすことです。
お役に立てれば、
マット
Sp_help_revloginを使用してログインを転送するために、サーバーをシングルユーザーモードで起動する必要はありません。
SQL Serverに正常に接続できない状況では、 [〜#〜] dac [〜#〜] を使用してみてください。
シングルユーザーモードでも同様の経験があります。 「シングルユーザーモードを開始しました-私はシングルユーザーである必要があります」と考えるのは簡単です。しかし、アプリケーションはそれを知りません。最初に確認することは、シングルユーザーモードを開始する前にアプリケーションサービスを停止することです。シングルユーザーモードで他の接続を停止する別の方法は、あなたの前に接続しているログインへの接続を拒否することです。ログインしたユーザーを見つけるには?インスタンスのセキュリティプロパティで[ログイン監査-ログインの失敗と成功の両方の監査]をオンにします。シングルユーザーモードでSQLを起動し、少し待ってから停止します。次に、ログファイルの場所からメモ帳でSQLエラーログを確認します。接続中または接続試行中のログインは、SQLエラーログに表示されます。これらのログインが拒否された場合-あなたの前に接続することはできません。シングルユーザーモードを終了したら、ログインを再度有効にしてください。
ログインを問題なく移行するには、次のようにします。
...そして完了。
SQL ServerのSysAdminを使用している場合は、データベース(制限があるため、かなりの数になる可能性があります)をrestricted_userモードにすることを考えましたか?ただし、アプリや他のユーザーには昇格されたアクセス許可はありません。
コマンドラインからSQLサービスを開始し、SQLCMDを使用してスクリプトに接続して実行することをお勧めします。