次のすべてを実行しました。
リモートマスターデータベース:
CREATE LOGIN user1
WITH PASSWORD = 'Password22++'
GO
リモート認証データベース:
CREATE USER user1
FOR LOGIN user1
WITH DEFAULT_SCHEMA = authentication
GO
EXEC sp_addrolemember N'db_owner', N'user1'
GO
ローカル データベース:
EXEC master.dbo.sp_addlinkedserver
@server = N'AZ3',
@srvproduct=N'Any',
@provider=N'MSDASQL',
@datasrc=N'AZ3'
GO
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'AZ3',
@useself=N'False',
@locallogin=NULL,
@rmtuser=N'user1',
@rmtpassword='Password22++'
GO
リンク サーバーが作成されていることがわかりますが、それを確認して次のメッセージを表示しようとすると、次のようになります。
Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。(Microsoft.SqlServer.ConnectionInfo) リンク サーバー "AZ3" の OLE DB プロバイダー "MSDASQL" がエラーを報告しました。
認証に失敗しました。
付与する必要がある役割は他にもありますか?
また、リモートのデータベースの「ABC」テーブルなどのテーブルを選択したいだけの場合、authentication
その SQL をどのようにコーディングすればよいですか?
これが私が試したことです:
SELECT * FROM OPENQUERY([AZ3],'SELECT * FROM dbo.AspNetRoles')
しかし、これも私にエラーを与えます:
リンク サーバー "AZ3" の OLE DB プロバイダー "MSDASQL" がメッセージ "[Microsoft][SQL Server Native Client 11.0][SQL Server]ステートメントを準備できませんでした。" を返しました。リンク サーバー "AZ3" の OLE DB プロバイダー "MSDASQL" がメッセージ "[Microsoft][SQL Server Native Client 11.0][SQL Server] 無効なオブジェクト名 'dbo.AspNetRoles'." を返しました。メッセージ 7350、レベル 16、状態 2、行 1 リンク サーバー "AZ3" の OLE DB プロバイダー "MSDASQL" から列情報を取得できません。