微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

排除查询输出 SQL Server 无法初始化 sqlcmd 库,错误号为 -2147467259

如何解决排除查询输出 SQL Server 无法初始化 sqlcmd 库,错误号为 -2147467259

确定@Exclude_Query_Output = 0 是 sql 代码中的失败部分。我不知道如何纠正这个问题。

sql 作业发送 DB 邮件时,我一直在努力纠正这个问题(几个月)。我创建了一个 sql 作业,执行一个查询一个服务器数据库和表的存储过程。然后将结果存储在一个变量中并每天通过电子邮件发送给用户

这是我的设置:

Linked Server A to Linked Server B using a sql user named 'xxxdba'
Server type sql Server in Linked Server Properties
On both servers I'm using "Be made using this security context"
The user has the database role "DatabaseMailUserRole"
Job owner is NT Service/sqlSERVERAGENT
The job is ran as xxxdba in the job step advanced area

在服务器 A 和 B 上,用户都读/写用户映射到我在下面提供的查询中的表。在数据库本身下,用户已经执行到我创建的存储过程。

作业步骤属性

Step name
Type T-sql
Run As (Blank)
Database (Win)
Command: Execute dbo.procedure_db_mail

创建的过程:

CREATE PROCEDURE PROCEDURE_DB_MAIL

AS

Declare @Qry varchar(5000) = 'EXEC XXXXXX.WIN.DBO.[Table_Roll_View]' --VIEW
SET @Qry = N'SELECT [PrevIoUs Day Table Roll information] --Stored Procedure
From MSDB.DBO.sysjobs'
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'Jwendt@xxxxxxx.com;',@Query = @Qry,@query_result_header = 1,@exclude_query_output = 0,@execute_query_database = 'Win',@subject = 'Table Roll Data',@attach_query_result_as_file = 1,@query_attachment_filename = 'Table Roll Data.txt',@append_query_error = 1,@profile_name = 'sql Mail Alert'

查看信息:

CREATE VIEW Table_Roll_View
AS
SELECT disTINCT a.Timestamp,a.DocgamingDate,a.Document_ID,a.DocType,t1.InternalStatus,a.DocStatus,a.DocNumber,b.Name,t1.Description,T1.XXXXGameName,b.Location_ID,T1.PitID,T1.TableID
From OPENQUERY([XXXXITDB],'Select disTINCT b.PitID,b.TableID,b.Description,a.GameCode,b.XXXXGameName,b.XXXXTableName,b.InternalStatus,b.ExternalGameDay,b.InternalGameDay
From [XXXXIT].[dbo].[CurrentTableConfig] a
INNER JOIN [XXXXIT].[dbo].[Tables] b
on a.SAKEY = b.TableSAKEY'
) t1
INNER JOIN [Win].[dbo].[XX_Location] b
on b.Name = t1.XXXXTableName
INNER JOIN [Win].[dbo].[XX_Document] a
ON a.Location_ID = b.location_ID
Where a.DocgamingDate = CAST(GETDATE() -1 AS Date) --Looking at yesterday's table processes
--OR a.DocgamingDate = GETDATE() --Including today's table openers
and t1.description NOT LIKE '%zz%'

执行作业(我是所有服务器的系统管理员

sql 历史消息: 以用户身份执行:xxxdba。无法初始化 sqlcmd 库,错误号为 -2147467259。 [sqlSTATE 42000](错误 22050)。步骤失败。

Windows 应用程序日志:

sql Server 计划作业“前一天表滚动信息”(0x74F50053DC25DD439C6438B586359845) - 状态:失败 - 调用时间:2021-02-24 10:19:46 - 消息:作业失败。作业由用户 XXXXXXXXXXXX\jwendt 调用。运行的最后一步是第 1 步(执行和发送电子邮件)。

附加说明:

I made the Linked Server credential a system admin for testing purposes and got the same error.
I get the same result if I execute the SP by itself outside of the job
If I run as myself,the results are the same.
Shared Memory,Named Pipes and TCP/IP are enabled on both servers
Data Access,RPC,RPC Out,Use Remote Collation and Enable Promotion of distributed Transaction is set to True in the Linked Server properties


我在另一台服务器上遇到了同样的问题,这就是它非常令人困惑的地方。我对上述用户具有相同的设置和权限。不同之处在于,我有一封电子邮件,用于发送预加载和后加载。

管理层收到一封电子邮件,告知客户在周日玩宾果游戏所赚取的积分倍数。此电子邮件工作正常(预加载)。一旦帖子加载时间过去,电子邮件就会失败。如果本地服务器时间是上午 10 点,那么管理层将在上午 7 点收到他们的电子邮件。如果后加载时间设置为上午 11 点且本地服务器时间 >= 上午 11 点,作业将失败并显示 sqlCMD 库错误

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。