Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 ADODB.Recordset error“800a0e78”对象关闭时不允许操作:针对临时表的存储过程需要设置NOCOUNT ON_Sql Server 2008_Asp Classic_Ado - Fatal编程技术网

Sql server 2008 ADODB.Recordset error“800a0e78”对象关闭时不允许操作:针对临时表的存储过程需要设置NOCOUNT ON

Sql server 2008 ADODB.Recordset error“800a0e78”对象关闭时不允许操作:针对临时表的存储过程需要设置NOCOUNT ON,sql-server-2008,asp-classic,ado,Sql Server 2008,Asp Classic,Ado,我正在使用SQLServer2008探索全文索引搜索,遇到两组错误 它源于我用VBScript调用的一个存储过程,该过程生成搜索命中列表记录集。存储过程在SQLServerManagementStudio中运行良好,基本上生成搜索命中列表。参数是用于突出显示的关键字和样式 初始错误: 错误一:ADODB。关闭对象时,不允许记录集错误“800a0e78”操作 在to ASP代码中的If not recordset.EOF行。然后,一点阅读和搜索都没有引起注意;特别是在引用临时表时 然而,当我指定S

我正在使用SQLServer2008探索全文索引搜索,遇到两组错误

它源于我用VBScript调用的一个存储过程,该过程生成搜索命中列表记录集。存储过程在SQLServerManagementStudio中运行良好,基本上生成搜索命中列表。参数是用于突出显示的关键字和样式

初始错误:

错误一:ADODB。关闭对象时,不允许记录集错误“800a0e78”操作

在to ASP代码中的If not recordset.EOF行。然后,一点阅读和搜索都没有引起注意;特别是在引用临时表时

然而,当我指定SETNOCOUNT ON时,我得到了错误二中列出的错误。注意:关于权限,我已将执行权限分配给运行存储过程的帐户,以突出显示搜索结果

错误二:用于SQL Server的Microsoft OLE DB提供程序错误“80040e14” 用户没有执行此操作的权限

添加集合NOCOUNT ON时出现错误2

ASP代码:导致错误的行高亮显示

Dim命令 Dim新参数 暗淡记录集 模糊搜索词 尺寸标注样式 搜索项= SearchTerm=RequestsearchTerm 样式=背景色:黄色;字体大小:粗体 Dim objConnectionMICenter 设置objConnectionMICenter=Server.CreateObjectADODB.Connection objConnectionMICenter。打开会话ConnectionMiCenter Set cmd=Server.CreateObjectADODB.Command 设置cmd.ActiveConnection=objConnectionMICenter '定义存储过程的输入和输出 '问号充当的每个参数的占位符 '存储过程 cmd.CommandType=4'adCmdStoredProc cmd.CommandText=HelpAndCalculationNoteHighlight '--为SearchTerm创建并附加参数 Set newParameter=cmd.CreateParameterSearchTerm,2031100,SearchTerm cmd.Parameters.Append newParameter '--为SearchTerm创建并附加参数 Set newParameter=cmd.CreateParameterStyle,203,1200,Style cmd.Parameters.Append newParameter Set recordset=cmd.Execute **如果不是recordset.EOF,则** 而不是recordset.EOF response.Write&recordset.FieldsStippet& recordset.MoveNext 温德 如果结束 响应。写入strPreviewContents 设置objConnectionMICenter=Nothing Set newParameter=Nothing Set cmd=Nothing 记录集,关闭 Set recordset=Nothing 存储过程:

ALTER PROCEDURE [dbo].[HelpAndCalculationNoteHighlight]
@SearchTerm nvarchar(100),
@Style nvarchar(200)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

CREATE TABLE #match_docs
(
doc_id bigint NOT NULL PRIMARY KEY
);

INSERT INTO #match_docs
(
doc_id
)
SELECT DISTINCT
id
FROM IntegratedHelpNotes_ChildSectionPage
WHERE FREETEXT
(
content,
@SearchTerm,
LANGUAGE N'English'
);

-- Begin Second Block
DECLARE @db_id int = DB_ID(),
@table_id int = OBJECT_ID(N'IntegratedHelpNotes_ChildSectionPage'),
@column_id int =
(
SELECT
column_id
FROM sys.columns
WHERE object_id = OBJECT_ID(N'IntegratedHelpNotes_ChildSectionPage')
AND name = N'content'
);

-- Begin Third Block
SELECT
    s.id,
    MIN
    (
        N'...' + SUBSTRING
        (
            REPLACE
                (   
                    c.content,
                    s.Display_Term,
                    N'<span style="' + @Style + '">' + s.Display_Term + '</span>'
                ),
            s.Pos - 512,
            s.Length + 1024
        ) + N'...'
    ) AS Snippet
    FROM
    (
        SELECT DISTINCT
            c.id,
            w.Display_Term,
            PATINDEX
                (
                    N'%[^a-z]' + w.Display_Term + N'[^a-z]%',
                    c.content
                ) AS Pos,
            LEN(w.Display_Term) AS Length
        FROM sys.dm_fts_index_keywords_by_document
            (
                @db_id,
                @table_id
            ) w
        INNER JOIN dbo.IntegratedHelpNotes_ChildSectionPage c
            ON w.document_id = c.id
            WHERE w.column_id = @column_id
                AND EXISTS
                    (
                        SELECT 1
                        FROM #match_docs m
                        WHERE m.doc_id = w.document_id
                    )
                AND EXISTS
                (
                    SELECT 1
                    FROM sys.dm_fts_parser
                        (
                            N'FORMSOF(FREETEXT, "' + @SearchTerm + N'")',
                            1033,
                            0,
                            1
                        ) p
                    WHERE p.Display_Term = w.Display_Term
                    )
                ) s
            INNER JOIN dbo.IntegratedHelpNotes_ChildSectionPage c
            ON s.id = c.id
            GROUP BY
            s.id;
DROP TABLE #match_docs;
END;

您使用的sys.dm视图需要提升权限

=系统管理员 =创建全文目录 正如您所提到的,您正在使用两组不同的凭据

您是SSMS中的系统管理员,是vb脚本中的普通用户


您可以尝试在存储过程中以所有者身份执行。或者尝试将sys.dm_fts_解析器包装到master中的一个视图中,也可以使用EXECUTE AS OWNER

Cheers mate。在经历了数小时的挫折后,终于找到了解决方案,这让人非常欣慰