SQL Server LocalDBインスタンスのフォルダーをデフォルトの場所から移動する方法は?


12

私は複数のエラーを取得していないLocalDB起動エラーSQL Server Management StudioのからDBを作成することはできませんし、また、複数の 問題バックアップを復元しようとすると)、私は何を支援している見つけ修正のどれも。すべてのエラーは、正しく設定されていないアクセス許可に基づいているようです。

これで、簡単なDDLテーブル作成スクリプトがSQL Server Management Studioから正常に機能し、ユーザーアカウントのフォルダーのルートにデータベースを作成します(ここで説明します)。ただし、Instancesフォルダー(SQL Server ExpressとAdvanced ServicesD:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instancesインストールするときに別の場所にDATAフォルダーを指定しました-標準のSQL Server Express ファイルのみが保存され、インスタンスは保存されません)ルート)したがって、プロジェクト内の場所にDBファイルを配置するために、Instancesフォルダーを別の場所に移動したいと思います。これは可能ですか?対応するレジストリエントリも見つけられませんでした。.mdfLocalDB

SQL Server Express 2012と同じバージョンのSSMS(最新の更新プログラムがインストールされています)を使用しています。

任意の助けをいただければ幸いです。

編集: KookieMonsterが前述した[データベースの設定]ページでエラーがスローされ、編集や構成の表示ができません。Windows Updateで更新プログラムを再度チェックし、インストールされていないSQL Server Expressの更新プログラムがいくつかあったので(インストールするものはすべて選択したはずですが)、それらをインストールしました。これにより、設定ページに移動できました。

LocalDBインスタンスのルートフォルダーを別の場所に設定しようとしましたが、試したすべてのフォルダーに対してアクセス拒否エラーが発生しました。つまり、

設定 'Microsoft.SqlServer.Management.Smo.ObjectKeyBase'の変更に失敗しました。(Microsoft.SqlServer.Smo)

- - - - - - - - - - - - - - - 追加情報:

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


RegCreateKeyEx()がエラー5、「アクセスが拒否されました」を返しました。(Microsoft SQL Server、エラー:22002)

フォルダーにEveryoneのフルコントロールが設定されていても、これを取得します!動作する唯一のフォルダ、さらにデフォルトとして設定されているフォルダ(ユーザーアカウントのルート)には、特別なアクセス許可は適用されません-ユーザーが持っているフォルダのみ(他の設定したフォルダと同様)。実際には、これはすべてのLocalDBデータベースのファイルがアカウントのルートフォルダーに保存されることを意味します。


1
データベースを作成し、デフォルトを使用する代わりにファイルを特定の場所に明示的に設定するとどうなりますか?
アーロンバートランド

1
お返事をありがとうございます!それは機能します(プロジェクトフォルダーのような適切なフォルダーを選択した場合)が、毎回パスを指定する必要があるのは非常に不便です。デフォルトを変更する方法がないとは信じられません。
ピエドン

サーバーノードに移動し、右クリック、プロパティ、データベースパラメーターを使用してデフォルトの場所を切り替えるとどうなりますか 値はインストール中に設定した値ですか、それとも何か他のものですか?
KookieMonster

私はまったく同じ問題を抱えています。フォルダーのアクセス許可を変更しても効果がないのは、実際にはレジストリにアクセス許可の問題があること、具体的にはレジストリキーを作成していることが原因だからだと思います(最後の部分:RegCreateKeyExを参照)。残念ながら、どのキーを作成したいのかわかりません。
daveaglick

回答:


13

上記の私のコメントを参照してください。プロセスモニターを使用してレジストリアクセスをトレースしましたが、書き込みの試行中にアクセスが拒否されました。

3:16:40.8405491 PM sqlservr.exe 8756 RegCreateKey HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer ACCESS DENIED Desired Access: Write

これを回避するには、レジストリエディターを開き、すべてのユーザーにの完全なアクセス権を付与しHKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServerます。その後、デフォルトの場所を変更し、完了したらEveryoneアクセスを削除しました。これにより、以前は存在しなかった次の追加キーが作成されました。

DefaultData

DefaultLog

BackupDirectory


ありがとうございました。最終的には別のルートに行ったので、これがどのように機能するかをテストすることはできません。
ピードネ14年

3
ここで提案した解決策をまさに試してみましたが、レジストリで言及した追加機能があります。それでも、これはローカルデータベースの現在のプロパティ値を上書きまたは変更しません。レジストリには3つの場所すべてに必要な値が表示されますが、SMSSにはインストールによるデフォルトの場所がまだあります。MS SQL Server Compact 3.5 SP 1を使用することが、このような動作の理由になる可能性がありますか?
user3840527

2
これは私が見つけることができましたことを唯一の場所である任意のこのエラーについての情報を。somedave、はい、そのregキーのアクセス許可を変更するとエラーは消えますが、user3840527が言うように、SSMSは終了してから再び開いた後でも、元のデフォルトの場所を保持しています。
ヤンデュラン

@ Piedone、reg keyメソッドを使用する代わりに何をしたのか説明していただけますか?または、方法を説明するどこかを指しますか?ありがとう
ヤンデュラン

1
エラーは消えますが、場所は変わりません
アディルママドフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.