SQLServerのリンクサーバーを利用してAccess(accdb)へ接続したい
解決したいこと
SQLServerのリンクサーバーを利用してAccess(accdb)へ接続したい
例)
SQLserverのリンクサーバーを利用してAccessへ接続を使用としています。
リンクサーバーでAccessへ接続する方法としてプロバイダは「Microsoft Office 16.0 Access Database Engine OLE DB」か「Microsoft OLE DB Provider for ODBC Driver」のどちらかになるかと思いますが、
まず、Microsoft Office 16.0 Access Database Engine OLE DB を利用してAccessへ接続しました。
この時のログイン情報はWindows認証になっています。
この時は問題ないのですが、ログインユーザーを変更して接続がうまくできません。
設定などを変更しているので表にしてみます。
ユーザー | Windows認証 | testユーザー(SQL認証) |
---|---|---|
サーバーロール | public、sysadmin | public ※sysadminをつけていないのは、スキーマ修飾を省くためです。 |
既定のスキーマ | dbo | s_test2 |
ユーザーマッピング | データベース名:TEST ロールメンバー:db_owner、public |
データベース名:TEST ロールメンバー:db_owner、public ※db_ownerをつけているのは、dboのスキーマ修飾を省くためです。 |
発生している問題・エラー
状態 | Windows認証 | testユーザー(SQL認証) |
---|---|---|
セキュリティコンテキストを使用しない | 接続OK | ログインマッピングが存在しないので、リモートサーバーへのアクセスが拒否されました。 |
セキュリティコンテキストを使用する | 接続OK | 「認証に失敗しました」 |
このセキュリティコンテキストを使用する リモートログインとパスワードにドメイン\ユーザー名やsaを入力 |
Not a valid accountname or password | Not a valid accountname or password |
参考にしたサイト
まとめ
スキーマ修飾を省きたい場合は、sysadminから外さないといけないのですが、リンクテーブルでセキュリティコンテキストを使用しないにするならsysadminにしないと繋がりませんでした。
Access側にはパスワード等設定していないため、セキュリティコンテキストを使用する意図がいまいちわかっていないことも原因の1つだとは思います。
何かヒントとなるサイトなどがあればご教示いただければと思います。
0