Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 sql server 2012:如何处理send_dbmail中@query变量的varbinary?_Sql Server - Fatal编程技术网

Sql server sql server 2012:如何处理send_dbmail中@query变量的varbinary?

Sql server sql server 2012:如何处理send_dbmail中@query变量的varbinary?,sql-server,Sql Server,我的目的是通过sql代理作业管理的存储过程来监视cdc进程。我正在查看自上次执行作业以来是否捕获了任何数据。IntervalHours表示自上次批处理运行以来的小时数。以下是用于设置notify/notify决策的代码段: declare @FromLSN binary(10) declare @ToLSN binary(10) declare @BeginTime datetime declare @EndTime datetime declare @hasCurren

我的目的是通过sql代理作业管理的存储过程来监视cdc进程。我正在查看自上次执行作业以来是否捕获了任何数据。IntervalHours表示自上次批处理运行以来的小时数。以下是用于设置notify/notify决策的代码段:

  declare @FromLSN binary(10)
  declare @ToLSN binary(10)
  declare @BeginTime datetime 
  declare @EndTime datetime 
  declare @hasCurrentChanges int
  declare @SendLowFloorMessage bit

  select @BeginTime = dateadd(hh,-@IntervalHours,getdate())
  SET @EndTime = GETDATE();

  -- Map the time interval to a change data capture query range.
  SET @FromLSN = [myInstance].sys.fn_cdc_map_time_to_lsn('smallest greater
      than or equal', @BeginTime);

  SET @ToLSN =   [myInstance].sys.fn_cdc_map_time_to_lsn('largest less than 
      or equal', @EndTime);

  -- Return the count of the net changes occurring within the query window.
  SELECT @hasCurrentChanges = count(*) FROM
         [myInstance].cdc.fn_cdc_get_net_changes_dbo_CRM_POSTran(@FromLSN, @ToLSN, 
          'all');
--这是决定--


我假设您对sp_send_dbmail有很好的处理能力,只是不知道如何使用varbinary数据类型为@query创建动态TSQL。下面是使用XMLDOM转换数据的一种方法

这里是我的网站的参考,展示了如何为2008 R2发送带有附件的电子邮件

这与2012年几乎相同——在线图书

下面的示例代码采用两个十六进制数,并将它们转换为对cdc.fn\u cdc\u get\u net\u changes的调用

下面是代码段的输出

SELECT * 
FROM  cdc.fn_cdc_get_net_changes_HR_Department
      ('0x5BAA61E4C9B93F3F0682','0x5BAA61E4C9B93F3F0782','all');
谢谢@CraftyDBA!:)我真的很感激你的迅速反应。
  DECLARE @bdy nvarchar(1000);
  DECLARE @sbj nvarchar(50)
  DECLARE @MailRecipients VARCHAR(50)
      DECLARE @qry nvarchar(max) 
  SET @MailRecipients = 'paula.ditallo@gmail.com'

  --Send email with results of long-running jobs
        EXEC msdb.dbo.sp_send_dbmail
             @profile_name = @mailProfile
            ,@recipients = @MailRecipients
            ,@query = @qry
            ,@execute_query_database = 'InternalResource'
            ,@body = @bdy
            ,@subject = @sbj
            ,@attach_query_result_as_file = 1;
-- Sample data
DECLARE @from_lsn VARBINARY(10);
SET @from_lsn = 0x5BAA61E4C9B93F3F0682;

DECLARE @to_lsn VARBINARY(10);
SET @to_lsn = 0x5BAA61E4C9B93F3F0782;

-- Display the results
DECLARE @tsql VARCHAR(MAX);
SELECT @tsql =
'SELECT * FROM cdc.fn_cdc_get_net_changes_HR_Department(' + 
char(39) + '0x' + CAST('' AS XML).value('xs:hexBinary(sql:variable("@from_lsn"))', 'VARCHAR(20)') + char(39) + ',' +
char(39) + '0x' + CAST('' AS XML).value('xs:hexBinary(sql:variable("@to_lsn"))', 'VARCHAR(20)') + char(39) + + ',' +
char(39) + 'all' + char(39) +');';

-- Show the data
PRINT @tsql
SELECT * 
FROM  cdc.fn_cdc_get_net_changes_HR_Department
      ('0x5BAA61E4C9B93F3F0682','0x5BAA61E4C9B93F3F0782','all');