web-dev-qa-db-ja.com

adventureworks 2012データベースをインストールできません-オペレーティングシステムエラー5:アクセスが拒否されました

AdventureWorks 2012データベースをSQL Server 2012にインストールしようとしています。このリンクからmdfファイルを取得しました- http://msftdbprodsamples.codeplex.com/releases/view/93587

ダウンロードしたファイルの名前は次のとおりです-AdventureWorks2012_Database.Zip

私はこれをすべてWindows 7 64ビットで実行しています。

以下のエラーが表示されます。

Attach database failed for Server 'SuperPC\SQL2012'.  (Microsoft.SqlServer.Smo)

For help, click: http://go.Microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=11.0.2100.60+((SQL11_RTM).120210-1917+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Attach+database+Server&LinkId=20476

ADDITIONAL INFORMATION:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

Unable to open the physical file "C:\Databases\AdventureWorks2012_Data.mdf". Operating system error 5: "5(Access is denied.)". (Microsoft SQL Server, Error: 5120)

For help, click: http://go.Microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=11.00.2100&EvtSrc=MSSQLServer&EvtID=5120&LinkId=20476
23
Steam

問題の理由-データベースのmdfファイルとldfファイルを「公式」SQLサーバーのインストールフォルダー外のディレクトリに配置する。

解決策-

http://tryingmicrosoft.com/error-while-attaching-a-database-to-sql-server-2008-r2/

.mdfファイルとldfファイルをこのディレクトリに貼り付けます-C:\ Program Files\Microsoft SQL Server\MSSQL11.SS2012\MSSQL\DATA

問題を解決しなかった解決策-

1-圧縮されたファイルのブロックを解除します。また、mdfおよびldfファイルがブロックされていないことを確認しました。 (手順-Zipファイルを右クリックして[プロパティ]> [ブロックを解除])

Unblock

2-管理者としてSSMS 2012を実行します。

3-フォームのSQLクエリを実行します-

CREATE DATABASE MyAdventureWorks 
    ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'), 
    (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf') 
    FOR ATTACH; 
68
Steam

オプション

1。.mdfおよび.ldfをSQLServerインストールディレクトリ\ Data \フォルダーに移動します(例:C:\ Program Files(x86)\ Microsoft SQL Server\MSSQL10 .SQLEXPRESS\MSSQL\DATA)

2。SQL Server Management Studioを管理者として実行

3。アクセスする必要のあるディレクトリに、SQL Serverユーザーの権限を追加します。どのユーザーが正しいのかはわかりませんでしたが、「[PCNAME]\Users」アカウントにフォルダーへのフルアクセスを与えることで、正常に機能するようになりました。

ステップ

フォルダーを右クリックします。プロパティを選択します。 「セキュリティ」タブを選択します。 「編集」をクリックします。 「ユーザー([PCNAME]\Users)」を選択します。たとえば、PCの名前がmycompの場合、これは「Users(mycomp\Users)」になります。

[ユーザーの権限]の下の[フルコントロール]の横にある[許可]チェックボックスをクリックします。

オプション1および2の詳細については、 here を参照してください。

CREATE FILEでオペレーティングシステムエラー5が発生しました(このエラーのテキストを取得できませんでした。理由:15105)

18
Cyborg

許可を変更しましたが、それはうまくいきました:セキュリティ->詳細。 'NT Service\MSSQLSERVER'を追加し、フルアクセス継承を無効にするを付与して、トラブルシューティングを容易にするために自分で追加します。 .mdfファイルと.ldfファイルの両方でそれを行います。

12
Mikl X

.mdfファイルを移動する必要はありません。データベースがあるフォルダーを右クリックして、セキュリティ権限を変更します。 認証済みユーザーフルコントロールを与えました。次に、以下のTSQLスクリプトを実行して、データベースをアタッチしました。

CREATE DATABASE MyAdventureWorks 
    ON (FILENAME = 'C:\Adventureworks\AdventureWorks2012_Data.mdf'), 
    (FILENAME = 'C:\Adventureworks\AdventureWorks2012_Log.ldf') 
    FOR ATTACH; 

ご覧のとおり、データベースファイルはAdventureworksというフォルダーにあります。

7
Roger

エラー5-アクセスが拒否されました-DOSの昔からのものです。基本的に、これはACL-アクセス制御リストエラーです。

SQL SERVER SERVICEアカウントがアクセスできる限り、好きな場所にデータベースを置くことができます!

ログインしているユーザーは関係ありません。ディレクトリとファイルにアクセスする必要があるのはサービスアカウントです。

管理者としてSSMSを実行する必要はありません。私はこのステップなしで常にデータベースを接続しました。

6
CRAFTY DBA

添付して初めてデータベースを作成する場合は、ログファイルを削除するだけで済みます。

添付してデータベースを作成しようとしていたが、同様のスクリーンショットを取得し続けた

enter image description here

以下の記事を見つけてログを削除しなければならなかったのは明らかでしたが、MSは新しいデータベースに対して自分で表示しないことを提案しませんでした。非常に悪い経験で、SQLサーバーライセンス製品に似ているかどうかはわかりません。

http://exacthelp.blogspot.in/2012/12/unable-to-open-physical-file-operating.html

6
user_v

AdventureWorks2012データベースをローカルのMSSQLデータベースに接続する手順:

解決策1: WindowsのC:\ドライブに十分なスペースがあり、C:\ドライブにデータベースを作成する場合

  1. AdventureWorks2012_Data.mdfおよびAdventureWorks2012_log.ldfを以下の場所に配置しますC:\ Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA

2.オブジェクトエクスプローラで「データベース」を右クリックし、「添付」を選択します

3. [データベースのアタッチ]ダイアログボックスで、アタッチするデータベースの[追加]ボタンをクリックします:フィールド。

  1. MDFファイルの場所C:\ Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\AdventureWorks2012_Data.mdfに移動し、[Attach Databases]の下部にある[OK]をクリックしますダイアログボックス。

5.データベース「AdventureWorks2012」がSQL Severに作成されます。

解決策2: WindowsのC:\ドライブに十分なスペースがない場合

1.サーバー名XXX\SQLEXPRESSおよび認証-「Windows認証」を選択して、ローカルサーバーに接続します

2.オブジェクトエクスプローラで「データベース」を右クリックし、「添付」を選択します

3. [データベースのアタッチ]ダイアログボックスで、アタッチするデータベースの[追加]ボタンをクリックします:フィールド。

  1. MDF F:\ AdventureWorks2012_Database\AdventureWorks2012_Data.mdfのファイルの場所に移動し、[データベースの接続]ダイアログボックスの下部にある[OK]をクリックします。

  2. これにより、次のエラーメッセージが生成されます。「データベースの接続中にエラーが発生しました。詳細については、[メッセージ]列のハイパーリンクをクリックしてください。

  3. ソリューションは次のとおりです。

    i)AdventureWorks2012_Dataフォルダーを右クリックして、[プロパティ]を選択します。

    ii)[セキュリティ]タブをクリックします

    iii)[グループ名またはユーザー名:]セクションで[ユーザー(xxx\Users)]を選択します

    iv)[編集]ボタンをクリックします

    v)ポップアップの[グループ名またはユーザー名:]で[ユーザー(xxx\Users)]を選択します。

    vi)[ユーザーのアクセス許可]セクションの[フルコントロール]チェックボックスをオンにします。

    vii)[OK]と[OK]をクリックします。

  4. ここで、SQLseversの[データベースのアタッチ]画面に戻り、アタッチするデータベースの[追加]ボタンをクリックします:フィールド。

  5. MDFファイルの場所、たとえばF:\ AdventureWorks2012_Database\AdventureWorks2012_Data.mdfに移動し、[データベースのアタッチ]ダイアログボックスの下部にある[OK]をクリックします。

  6. これで、データベース「AdventureWorks2012」がSQL Severに作成されます。

6
Dorababu G

これは古い質問であることに気づきましたが、私にとっては、データベースをアタッチするために実際には2つの要件がありました外部デフォルトのフォルダー:

  1. 現在のユーザー(私)にフォルダーへのフルアクセスを明示的に許可する必要がありました(既に暗黙的なアクセス許可があるにもかかわらず)
  2. NT SERVICE\MSSQL$INSTANCENAMEフォルダへのフルアクセス

プロセス(SSMS)が昇格されている場合、#1は必要ないと思います。

2
Richard Szalay
  1. データベースを接続します。
  2. ダイアログボックスで、AdventureWorksのファイルの場所を選択します。
  3. ファイルを追加します。
  4. データベースが接続されると、SQLサーバーが後で作成するため、ログファイルを削除します。
2
Rupinder Sood

以前の提案をありがとう。データベースファイルをSQLサーバーディレクトリに移動したり、データベースログファイルを削除したりする必要はありません。代わりに、認証済みユーザーの.MDFファイルと.LDFファイルの両方にフルコントロールのアクセス許可を与えるだけです。そうすることで、AdventureWorks2012とAdventureWorksLT2012の両方のサンプルデータベースをSQL Server Management Studio(SSMS)に正常にアタッチします。

0
Yong Yuan

このウェブサイトからアドベンチャー作品をダウンロードすることでこの問題を解決しました

http://msftdbprodsamples.codeplex.com/downloads/get/723031

Adventure Works Zipフォルダーをダウンロードする場合、このファイルには.mdfファイルと.ldfファイルの両方が含まれているため、AdventureWorks2012_Data.Zipなどのファイルに_dataが追加されていることを確認してください。

ダウンロード後、コンピューターのこのURLにフォルダーの内容を抽出しますC:\ Program Files\Microsoft SQL Server\MSSQL11。***\MSSQL\DATA。 SQlサーバーで、オブジェクトエクスプローラーに移動し、データベースを右クリックしてデータベースをアタッチします。 [添付]ダイアログボックスで、[Adve ********。mdf]を選択する必要があります。ここからは問題ないはずです。

これがお役に立てば幸いです。

0
Siobhan

ASP.NET MVSのカスタム設定で新しいデータベースを作成しようとしたときに同じ問題が発生し、それを解決するために数時間を失いました。最後に、私の解決策は、App_Dataフォルダーのフォルダーオプション/セキュリティを取得することでした。次に、「認証済みユーザー」アカウントを追加して、彼にフルコントロールを与えました。そして、それがすべてでした。私のアプリケーションはうまく動作します..

0
Kiril Dobrev

現在のユーザーをセキュリティタブに追加するだけで、添付クエリを完全に制御して再実行できます

0
TrayS

データベースファイルのSQLサービスアカウント「NT SERVICE\MSSQLSERVER」「フルコントロール」を与える

サーバーのファイル/フォルダーにアクセスできる場合は、この解決策を試すことができます:

Windows Server 2008 R2上のSQL Server 2012

  1. データベース(mdf/ldf)ファイルまたはフォルダーを右クリックし、[プロパティ]を選択します。
  2. 「セキュリティ」タブを選択し、「編集」ボタンをクリックします。
  3. [追加]ボタンをクリックします。
  4. オブジェクト名を入力して「NT SERVICE\MSSQLSERVER」として選択し、「名前の確認」ボタンをクリックします。
  5. MSSQLSERVER(RDN)を選択し、[OK]ボタンを2回クリックします。
  6. このサービスアカウントに「フルコントロール」をファイルまたはフォルダーに与えます。
  7. SSMSに戻り、データベースを右クリックして[プロパティ]を選択します。
  8. 「オプション」の下で「状態」セクションまでスクロールダウンし、「データベース読み取り専用」を「True」から「False」に変更します。
0
SimplyInk

実際には非常に簡単です。ファイルの名前を変更するだけです。移動する必要はありません。何でも実行する権限を追加します...

0
user763539

注:Windows 7 Pro、SQL 2012

DiskManager.mscを使用した後、machine_name\SERVICEファイルと.mdfファイルの両方に.ldfをフルコントロールで追加する必要がありました。

私のラップトップはBorrisです。

  1. ファイルの「名前」を右クリックして、「プロパティ」をクリックし、「セキュリティ」タブをクリックしてから、権限->追加して、サービスに名前を入力します。
  2. 戻るには、[OK]、[Apply]、[OK]、[OK]、[OK]、[OK]の順にクリックします。

ドライブ文字を切り替えるとアクセス許可がリセットされる理由はわかりませんが、Windowsではリセットされました ここに画像の説明を入力してください