0

そこで、リモートAccessデータベースに接続するためにSQLServerにsp_linkedserverを設定しました。

このデータベースへのパスがW:/breakfast/pancakes/secretPancakes/pancakeDB.accdbであると想定します。

実際のデータベースのユーザー名とパスワードはわかっています

パスワード:allY0urPancakeAreBelongToUs!

問題は、「secretPancakes」ディレクトリに入る認証もあるということです。

この認証は

ユーザー名:SuperChef

パスワード:ilovesf00d


sp_linkedserverを作成するためのコードは次のとおりです...

/****** Object: LinkedServer [PancakeDB] Script Date: 06/13/2012 10:08:21 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'PancakeDB', @srvproduct=N'Access 2007', @provider=N'Microsoft.ACE.OLEDB.12.0', @datasrc=N'W:/breakfast/pancakes/secretPancakes/pancakeDB.accdb
', @provstr=N';PWD=allY0urPancakeAreBelongToUs'
/* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'PancakeDB',@useself=N'False',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL

rmtuserとrmtpasswordはデータベース用ですが、正しいですか?実際のコンピューターで保護されたディレクトリ(secretPancakes)を開き、Windowsに自分の資格情報を記憶するように依頼すると、自分のコンピューターでは正常に機能しますが、他のコンピューターでは機能しません。

私はこれを修正しようとしているので、objNetwork.MapNetworkDrive(DriveLetter、RemotePath、False、UserID、UserPWD)を実行する必要はありません。これは面倒です。(objNetwork = Microsoft.VisualBasic.CreateObject( "WScript.Network"))

だから私の質問は:リンクされたサーバー内のフォルダアクセスの資格情報をどのように渡すのですか?

更新:このスクリーンショットは役立つかもしれません...? ここに画像の説明を入力してください

また、これは、これらのクレデンシャルを、そのフォルダーに正しく入るために使用されるクレデンシャルに変更する場所ですか? ここに画像の説明を入力してください

4

1 に答える 1

0

SQL Serverサービスアカウントは、Accessファイルがあるフォルダーにアクセスできる必要があります。そうすれば、SQLServerサービスアカウントは機能するはずです。あなたが言ったように、Access DBのユーザー名とパスワードは、誰かがファイルシステムに対する権限を持っているかどうかとは関係ありません。

理想的には、ここではドライブ文字を使用せず、代わりにUNCパスを使用することをお勧めします。これにより、ドライブマッピングの問題が回避されます。ただし、SQL Serverにファイルからの読み取りを許可する唯一の方法は、SQLServerに適切な共有とNTFSアクセス許可があることを確認することです。

于 2012-06-14T08:42:55.863 に答える