无法初始化 sqlcmd 库,错误号为 -2147467259。 - XML 专栏
Failed to initialize sqlcmd library with error number -2147467259. - XML Column
我一直收到这个错误
Failed to initialize sqlcmd library with error number -2147467259
当我尝试执行以下 SQL 代码时。这是一个正常的查询,而不是通过 SQL 服务器代理。
declare @SQL varchar(8000)
set @SQL = 'select a.b.value(''(../../@ID)'',''varchar(100)'') as [System-ID]
from [DB].[Schema].[Configuration] R
outer apply R.[Configuration].nodes(''root/System/Role/Authorization'') as a(b)
where R.[Report ID] = ''IT.00004'''
print @SQL
exec msdb.dbo.sp_send_dbmail
@profile_name = 'servername',
@recipients = 'info@company.com',
@subject = 'Test B',
@query = @SQL
但是,当我按照以下方式修改查询时,一切正常。
declare @SQL varchar(8000)
set @SQL = 'select *
from [DB].[Schema].[Configuration] R
where R.[Report ID] = ''IT.00004'''
print @SQL
exec msdb.dbo.sp_send_dbmail
@profile_name = 'servername',
@recipients = 'info@company.com',
@subject = 'Test B',
@query = @SQL
所以问题一定出在语句的这一部分(我在 table“Configuration
”中引用了一个名为“Configuration
”的 XML 列 - > 列名与table名称相同):
outer apply R.[Configuration].nodes('root/System/Role/Authorization') as a(b)
当我 运行 都在 msdb.dbo.sp_send_dbmail
语法之外进行查询时,它们都 运行 非常好。
有人知道这是怎么回事吗?我怀疑它是否与权限相关,因为导致问题的部分使用的是相同的 table 而不会导致任何问题。
为了解决这个问题,我必须在查询中添加以下内容:
set @SQL = 'SET QUOTED_IDENTIFIER ON '
set @SQL = @SQL + char(13)
set @SQL = @SQL + 'select a.b.value(''(../../@ID)'',''varchar(100)'') as [System-ID]
from [DB].[Schema].[Configuration] R
outer apply R.[Configuration].nodes(''root/System/Role/Authorization'') as a(b)
where R.[Report ID] = ''IT.00004'''
我一直收到这个错误
Failed to initialize sqlcmd library with error number -2147467259
当我尝试执行以下 SQL 代码时。这是一个正常的查询,而不是通过 SQL 服务器代理。
declare @SQL varchar(8000)
set @SQL = 'select a.b.value(''(../../@ID)'',''varchar(100)'') as [System-ID]
from [DB].[Schema].[Configuration] R
outer apply R.[Configuration].nodes(''root/System/Role/Authorization'') as a(b)
where R.[Report ID] = ''IT.00004'''
print @SQL
exec msdb.dbo.sp_send_dbmail
@profile_name = 'servername',
@recipients = 'info@company.com',
@subject = 'Test B',
@query = @SQL
但是,当我按照以下方式修改查询时,一切正常。
declare @SQL varchar(8000)
set @SQL = 'select *
from [DB].[Schema].[Configuration] R
where R.[Report ID] = ''IT.00004'''
print @SQL
exec msdb.dbo.sp_send_dbmail
@profile_name = 'servername',
@recipients = 'info@company.com',
@subject = 'Test B',
@query = @SQL
所以问题一定出在语句的这一部分(我在 table“Configuration
”中引用了一个名为“Configuration
”的 XML 列 - > 列名与table名称相同):
outer apply R.[Configuration].nodes('root/System/Role/Authorization') as a(b)
当我 运行 都在 msdb.dbo.sp_send_dbmail
语法之外进行查询时,它们都 运行 非常好。
有人知道这是怎么回事吗?我怀疑它是否与权限相关,因为导致问题的部分使用的是相同的 table 而不会导致任何问题。
为了解决这个问题,我必须在查询中添加以下内容:
set @SQL = 'SET QUOTED_IDENTIFIER ON '
set @SQL = @SQL + char(13)
set @SQL = @SQL + 'select a.b.value(''(../../@ID)'',''varchar(100)'') as [System-ID]
from [DB].[Schema].[Configuration] R
outer apply R.[Configuration].nodes(''root/System/Role/Authorization'') as a(b)
where R.[Report ID] = ''IT.00004'''