我的sql server数据库有一个复杂的问题,如果有人能帮我,那就太好了。
在我的sql server 2014 express中,我创建了一个包含3个表的简单数据库:
我还创建了Search过程(以及其他sql函数)来执行完整的搜索目录。(我共享我的sql server数据库备份:KmzBqksIs9ylWc5eKBvF1Tgg以便进行测试)
当我在我的sql服务器上表示本地时,下面的脚本如下所示:
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它运行得很好,让我重拾了两排。
现在我的问题是,我订阅了一个smarterasp.net托管计划,包括一个包含完整搜索文本目录的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它发现了以下消息错误:
Msg 30007、级别16、状态1、dm_fts_index_keywords、dm_fts_index_keywords_by_document、dm_fts_index_keywords_by_property和dm_fts_index_keywords_position_by_document的第20行参数不能为空。
有人遇到这个问题了吗?
发布于 2017-08-03 08:35:09
Sql server抛出一个错误,对我来说这是不正常的,它必须只返回null。
我解释一下问题出在哪里:
在我的存储过程GetMainTags中,我编写了硬编码的dabase的名称( server的旧名称):
声明@db_id int =db_id(N‘’semanticsdb‘);
所以这是假的。在我的新数据库中,我必须写:
声明@db_id int =db_id(N‘’my_new_database_name‘);
为了更通用,我必须对执行函数的当前数据库这样做:
声明@dbName varchar (100);选择@dbName = DB_NAME();声明@db_id int = db_id(@dbName);
https://stackoverflow.com/questions/45454989
复制相似问题