2017-08-02 22 views
0

我有一個sql server數據庫的複雜問題,如果任何人都可以幫助我,那會很棒。Msg 30007,Level 16 dm_fts_index_keywords,dm_fts_index_keywords_by_document,dm_fts_index_keywords_by_property

在我的SQL Server 2014 Express中,我創建3代表一個簡單的數據庫:

  • 「DocumentFile」, 「DocumentSearchTerm」, 「搜索關鍵詞」 和一個完整的搜索文本目錄FTCat其中的3列「 DocumentFile「表(ExtractText,FileNameWithoutExtension,FilePath)

而且我還創建了[Search] Store Procedure(以及其他sql函數)來執行完整的搜索目錄。

當我在我的SQL服務器上運行,表達當地這下面的腳本: (爲了測試https://1drv.ms/u/s!AlUHN_KmzBqksIs9ylWc5eKBvF1Tgg我分享我的SQL Server數據庫備份):

DECLARE @return_value int, 
     @TotalRecords int 

EXEC @return_value = [dbo].[Search] 
     @SearchTerm = N'c++', 
     @CurrentPage = 1, 
     @PageSize = 20, 
     @TotalRecords = @TotalRecords OUTPUT 

SELECT @TotalRecords as N'@TotalRecords' 

SELECT 'Return Value' = @return_value 

它運行良好,它retunrs我2行。

現在我的問題是,我訂閱了一個smarterasp.net託管計劃,包括一個帶有完整搜索文本目錄的sql server 2016數據庫。

因此,我恢復了我的託管數據庫(它運行成功)的備份,所有表,存儲過程,函數和我的完整搜索文本目錄已成功創建。

但現在當我執行相同的腳本:

DECLARE @return_value int, 
     @TotalRecords int 

EXEC @return_value = [dbo].[Search] 
     @SearchTerm = N'c++', 
     @CurrentPage = 1, 
     @PageSize = 20, 
     @TotalRecords = @TotalRecords OUTPUT 

SELECT @TotalRecords as N'@TotalRecords' 

SELECT 'Return Value' = @return_value 

它falied具有以下消息的錯誤:

消息30007,級別16,狀態1,行dm_fts_index_keywords的20個 參數,dm_fts_index_keywords_by_document,dm_fts_index_keywords_by_property ,並且dm_fts_index_keywords_position_by_document不能爲空。

有人遇到了這個問題嗎?

回答

0

SQL服務器拋出一個錯誤,對我來說這是不正常的,它必須返回null。

我解釋一下是什麼問題:

在我的存儲過程

[GetMainTags],我所著硬編碼dabase的名稱(舊名我的SQL Server的地方):

DECLARE @db_id int = db_id(N'semanticsdb');

所以這是錯誤的。在我的新數據庫中,我必須寫:

DECLARE @db_id int = db_id(N'my_new_database_name');

和更通用的我必須這樣做,對於當前的數據庫,其執行的功能:

聲明@DbName VARCHAR(100); SELECT @dbName = DB_NAME(); DECLARE @db_id int = db_id(@dbName);

相關問題