web-dev-qa-db-ja.com

SQL Server 2008 R2 Expressの権限-データベースを作成したり、ユーザーを変更したりすることはできません

最近、SQL Server 2008 R2 Expressにアップグレードされました。 id myuserでWindows認証を使用してログインした後にデータベースを作成しようとすると、次のエラーが表示されます。

Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.ConnectionInfo)
データベース 'master'でデータベースの作成権限が拒否されました。 READE HEADERONLYが異常終了していますエラー262

Sysadminロールをmyuserに追加しようとすると、表示されるエラーが表示されます。

ServerRole 'sysadmin'のメンバーの追加に失敗しました。 (Microsoft.SqlServer.Smo)
Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.ConnectionInfo)
ユーザーにはこのアクションを実行する権限がありませんエラー15247

このコマンドを使用して、T-SQLでユーザーにこのロールを追加しようとすると、

EXEC sp_addsrvrolemember 'ziffenergy\myuser', 'sysadmin';
GO

ここに私が受け取るエラーがあります:

メッセージ15247、レベル16、状態1、プロシージャsp_addsrvrolemember、行29
ユーザーには、このアクションを実行する権限がありません。

誰か提案はありますか?ローカルマシン上のデータベースでは何もできないようです。私は使用しているWindows 7ワークステーションの管理者であり、SQL Server Management Studioを使用してネットワークIT Testデータベースサーバーでデータベースやユーザーを作成または変更しようとしても問題なく実行できます。

16
user8128167

あなたはワークステーションの管理者かもしれませんが、それはSQL Serverにとって何も意味しません。問題のアクションを実行するには、ログインがsysadminロールのメンバーである必要があります。既定では、ローカル管理者グループはSQL 2008 R2のsysadminロールに追加されなくなりました。自分に権限を付与するには、他の何か(たとえばsa)でログインする必要があります。

14
squillman

パーティーに遅れて来ましたが、私はこれを見つけました 素晴らしいステップバイステップガイド saパスワードを持っていない場合、SQLExpressインスタンスの制御を取得することについて。このプロセスを使用して、saパスワードをリセットするだけでなく、使用可能なすべてのサーバーロールにドメインアカウントを追加しました。通常のログインを使用して、データベースの作成、ログインの変更、一括操作、バックアップ/復元などを行うことができます。

要約すると、SQL Server構成マネージャーを使用して、インスタンスをシングルユーザーモードにします。これにより、接続時にsysadminに昇格し、すべてを設定できるようになります。

編集:以下の手順をコピーしました-上記のリンクの元の作者に称賛を送ります。

  1. 管理者(または管理者特権を持つ任意のユーザー)としてコンピューターにログオンします。
  2. 「SQL Server構成マネージャー」を開きます
  3. 左ペインの[SQL Serverサービス]をクリックします
  4. 実行中の場合は、右側のペインで「SQL Server」および「SQL Server Agent」インスタンスを停止します
  5. [SQL Server]インスタンス-> [プロパティ](SQL Server構成マネージャーの右ペイン)を右クリックして、シングルユーザーモードでSQL Expressを実行します。
  6. [詳細設定]タブをクリックし、[スタートアップパラメータ]を探します。 「スタートアップパラメータ」を変更して、新しい値が-mになるようにします。 (<>なし)例:from:-dc:\ Program Files\Microsoft SQL .............(文字列の終わりまで)to:-m; -dc:\ Program Files\Microsoft SQL .............(文字列の最後まで)
  7. SQL Serverを起動します
  8. MS SQL Server Management Studioを開き、認証モードとして「Windows認証」を使用してSQLサーバーにログオンします。 SQL Serverはシングルユーザーモードで実行されており、管理者特権でコンピューターにログオンしているため、データベースへの "sysadmin"アクセスがあります。
  9. 左ペインでMS SQL Server Management Studioの[セキュリティ]ノードを展開します
  10. 「ログイン」ノードを展開します
  11. 「sa」ログインをダブルクリックします
  12. [パスワードポリシーを適用する]がオンになっている場合は複雑なパスワードを入力してパスワードを変更します。そうでない場合は、パスワードを入力します。
  13. 左ペインのステータスをクリックして、「sa」アカウントが「有効」になっていることを確認します。 「ログイン」の下のラジオボックスを「有効」に設定します
  14. 「OK」をクリックします
  15. MS SQL Server Management Studioのメインウィンドウに戻り、左ペインの最上位ノード(通常は「。\ SQLEXPRESS(SQL Server)」)を右クリックしてプロパティを選択し、SQL Server認証が使用されているかどうかを確認します。
  16. 左ペインの[セキュリティ]をクリックし、[サーバー認証]で[SQL ServerおよびWindows認証モード]が選択されていることを確認します
  17. 「OK」をクリックします
  18. MS SQL Server Management Studioから切断する
  19. 「Sql Server Configuration Manager」を再度開き、SQL Serverインスタンスを停止します。
  20. SQL Serverインスタンスを右クリックし、「詳細」タブをクリックします。再び「スタートアップパラメータ」を探し、「-m;」を削除します。以前に追加したこと。
  21. [OK]をクリックして、SQL Serverインスタンスを再度起動します
  22. これで、手順12で設定した新しいパスワードを使用して「sa」としてログオンできるようになります。
39
killthrush

SSMS 2012では、次を使用する必要があります。

シングルユーザーモードを有効にするには、SQLインスタンスプロパティで、「Advance」タグに移動しないでください。「Startup Parameters」タグが既にあります。

  1. 「-m;」を追加しますパラメータへ。
  2. サービスを再起動し、Windows認証を使用してこのSQLインスタンスにログオンします。
  3. 残りの手順は上記と同じです。セキュリティでWindowsユーザーアカウントのアクセス許可を変更するか、SAアカウントパスワードをリセットします。
  4. 最後に、「起動パラメータ」から「-m」パラメータを削除します。
2
Yang

私はkillthrushの答えの手順に従ったが、驚いたことにうまくいかなかった。 saとしてログインすると、Windowsドメインユーザーが表示され、sysadminになりましたが、Windows認証でログインしようとすると、ログイン中にログインが表示されず、データベースを作成できませんでした。 そのログインは、おそらく同じ名前の別のドメインアカウントに関連付けられています(内部ID /隠しIDが正しくありません)。しばらく前にこの組織を離れ、その後数か月後に戻ってきました。古いアカウント(削除された可能性がある)を再アクティブ化する代わりに、同じドメイン\ユーザー名と新しい内部IDを持つ新しいアカウントを作成しました。 saを使用して、古いログインを削除し、同じ名前で再度追加して、sysadminを追加しました。 Windows Authで再度ログインすると、すべてが正常に表示されます。これで、ログイン(およびその他)が表示され、Windows認証ログインを使用してsysadminとして必要なことをすべて実行できるようになりました。

1
Vitoc

Windowsマシンに2つのアカウントがあり、そのうちの1つでこの問題が発生していました。 saアカウントを使用したくなかったため、Windowsログインを使用したかった。 SQL Serverのインストールに使用した他のアカウントに単純にサインインし、そこから新しいアカウントのアクセス許可を追加する必要があることは、すぐにはわかりませんでした

(SSMS > Security > Logins > Add a login there)

そこに追加する必要がある完全なドメイン名を取得する簡単な方法open cmd echoそれぞれ。

echo %userdomain%\%username%

そのユーザーのログインを追加し、master dbおよび必要な他のデータベースのすべての許可を与えます。 「すべてのアクセス許可」と言うときは、「拒否」アクセス許可のいずれもチェックしないようにしてください。

0
parliament