Linked server и безопасность

Судя по поиску, вопрос частый, но ответа в моем случае не нашлось.

Имеем MS SQL 2005 Std SP2 на Win2003 Server. На нем созданы linked server для оракла и для текстовых файлов. Имеем родной сиквельный логин с серверной ролью public и db_owner для некоторой БД. Оракловый линк логинится через свой логин/пароль, специфицированные в настройках. Текстовый пользует директорию на том же диске, директория доступна на чтение даже Everyone.

При попытке делать под этим логином

SELECT * FROM OPENQUERY(MyServer, ...)

Выдается ошибка:
Msg 7416, Level 16, State 2, Line 1
Access to the remote server is denied because no login-mapping exists.

То же самое для ораклового линка проходит нормально.

Что подправить в консерватории?

Код создания линка:

EXEC master.dbo.sp_addlinkedserver 
	@server = N'MyServer', 
	@srvproduct = N'Jet 4.0', 
	@provider = N'Microsoft.Jet.OLEDB.4.0',
	@datasrc = N'D:\Dir\SourceData\',
	@location = NULL,
	@provstr = N'Text;HDR=YES;FMT=CustomDelimited(#)'
GO
 
EXEC master.dbo.sp_addlinkedsrvlogin 
   @rmtsrvname = N'MyServer', 
   @useself = FALSE, 
   @locallogin = NULL, 
   @rmtuser = NULL, 
   @rmtpassword = NULL
GO

Корректировка проблемы:

EXEC master.dbo.sp_addlinkedsrvlogin 
   @rmtsrvname = N'MyServer', 
   @useself = FALSE, 
   @locallogin = NULL, 
   <b>@rmtuser = Admin, </b>
   @rmtpassword = NULL

Forums: 

Нужно указать

Нужно указать @rmtuser=Admin.
В BOL все написано :):

Microsoft OLE DB Provider for Jet can be used to access and query text files.

To create a linked server for accessing text files directly without linking the files as tables in an Access .mdb file, execute sp_addlinkedserver, as shown in the following example.

The provider is Microsoft.Jet.OLEDB.4.0 and the provider string is 'Text'. The data source is the full path name of the directory that contains the text files. A Schema.ini file must exist in the same directory as the text files. A Schema.ini file describes the structure of the text file. For more information about how to create a Schema.ini file, see the Jet Database Engine documentation.

Copy Code
--Create a linked server.
EXEC sp_addlinkedserver txtsrv, 'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'c:\data\distqry',
NULL,
'Text'
GO

--Set up login mappings.
EXEC sp_addlinkedsrvlogin txtsrv, FALSE, NULL, Admin, NULL
GO

--List the tables in the linked server.
EXEC sp_tables_ex txtsrv
GO

--Query one of the tables: file1#txt
--by using a four-part name.
SELECT *
FROM txtsrv...[file1#txt]

Изображение пользователя Serguei_Tarassov.

Спасибо

Спасибо, заработало. Сразу не увидел разницу между примером в BOL и имеющимся кодом.