2015-06-03 30 views
0

隨着Windows 2003的結束壽命數據下個月若隱若現,我遷移遺留應用程序到Windows 2008。這一切與我們聯繫的例外了出奇順利索引服務。無法查詢索引服務與SQL認證用戶

我們有兩臺服務器,一臺運行SQL 2008的數據庫服務器和一臺Web服務器。我們的網絡應用程序允許用戶搜索文檔商店。具體的過程:在查詢

  1. 用戶類型的Web應用程序
  2. Web應用程序將查詢發送到數據庫服務器
  3. 查詢引用的Web應用程序,鏈接數據庫服務器,並加載檢索路徑成臨時表
  4. 數據庫服務器連接到SQL服務器
  5. 數據庫服務器將結果返回給Web應用程序
  6. 該網站applicati對另一個表的路徑向用戶顯示結果。

Web應用程序通過SQL驗證到數據庫服務器登錄進行查詢,但它失敗,此錯誤:當我試圖執行查詢時

An error occurred while preparing the query "SELECT PATH FROM "10.0.1.89".MyCatalog..SCOPE('DEEP TRAVERSAL OF "C:\Documents"') WHERE (FREETEXT(Contents, 'introduction')) OR (FREETEXT(FileName, 'introduction'))" for execution against OLE DB provider "MSIDXS" for linked server "Filesystem".

顯示同樣的錯誤登錄通過SSMS的數據庫服務器上的這個用戶,但也有一些額外的信息:

OLE DB provider "MSIDXS" for linked server "Filesystem" returned message "Invalid catalog name 'MYCATALOG'. SQLSTATE=42000 ".

Msg 7399, Level 16, State 1, Line 1

The OLE DB provider "MSIDXS" for linked server "Filesystem" reported an error.

Access denied.

Msg 7321, Level 16, State 2, Line 1

An error occurred while preparing the query "SELECT PATH FROM "10.0.1.89".MyCatalog..SCOPE('DEEP TRAVERSAL OF "C:\Documents"') WHERE (FREETEXT(Contents, 'introduction')) OR (FREETEXT(FileName, 'introduction'))" for execution against OLE DB provider "MSIDXS" for linked server "Filesystem".

然而,當我登錄到我的Windows身份驗證帳戶SSMS,我能夠執行相同的查詢並返回結果。我的用戶名和密碼必須是相同的Web服務器上的帳戶 - 如果我在Web服務器上修改密碼,則會引發錯誤,但不是同一個:

OLE DB provider "MSIDXS" for linked server "Filesystem" returned message "Unspecified error".

OLE DB provider "MSIDXS" for linked server "Filesystem" returned message "Invalid catalog name 'MYCATALOG'. SQLSTATE=42000 ".

Msg 7321, Level 16, State 2, Line 1 An error occurred while preparing the query "SELECT PATH FROM "10.0.1.89".MyCatalog..SCOPE('DEEP TRAVERSAL OF "C:\Documents"') WHERE (FREETEXT(Contents, 'introduction')) OR (FREETEXT(FileName, 'introduction'))" for execution against OLE DB provider "MSIDXS" for linked server "Filesystem".

我創建的鏈接服務器此查詢,這似乎符合遺留系統的配置:

EXEC sp_addlinkedserver FileSystem, 'Index Server', 'MSIDXS', 'Web'; 
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'FileSystem', @locallogin = NULL, @useself = N'False', @rmtuser = N'CatalogUser', @rmtpassword = N'xxx'; 

我創建了一個名爲CatalogUser Web服務器上的用戶,我設置其密碼是與上面相同的查詢。

但是,當我使用Windows身份驗證進行連接時,此信息似乎被忽略,而是使用我的Windows身份驗證數據。如果我將密碼更改爲任何內容,查詢仍然成功。

我試過讓CatalogUser作爲服務帳戶登錄,並沒有任何效果。

兩臺機器是不是一個域,但也不是兩個Windows 2003計算機,這工作完全正常。

我一定是錯過了兩者之間的設立的東西。不幸的是,這些機器都設置了長人開始將文檔這樣的東西之前,所以我不知道丟失的步驟是什麼。

沒有這個問題在互聯網上,這可能是由於軟件的年齡非常多的信息,所以起碼我們可以開始在這裏建立一個知識庫。我想知道現在是否有更多的人在使用該軟件時遇到問題,生命即將到來。

回答

0

我現在已經解決了這個問題。我不知道這一點,但是當您運行NT AUTHORITY\LOCAL SYSTEM下的程序時,它將通過網絡作爲匿名用戶進行身份驗證。

爲了解決這個問題,我在Web服務器和數據庫服務器上用相同的密碼創建了一個新的SqlServer用戶。然後我將SQL Server實例配置爲在該新用戶下運行,並開始正確驗證。

似乎任何爲MSIDXS後端輸入的安全信息都會被忽略,但如果您加入到某個域,則可能不會。我讀過的所有其他文檔都表明這是做到這一點的唯一方式,但在原始設置中並非如此,在此情況並非如此。