相关疑难解决方法(0)

执行sp_executeSql以选择...到#table但不能选择临时表数据

试图在sp_Executedsql中选择...到临时表#TempTable.不是它成功插入或没有,但有消息写入(359行受影响)意味着成功插入?下面的脚本

DECLARE @Sql NVARCHAR(MAX);
SET @Sql = 'select distinct Coloum1,Coloum2 into #TempTable 
            from SPCTable with(nolock)
            where Convert(varchar(10), Date_Tm, 120) Between @Date_From And @Date_To';

SET @Sql = 'DECLARE @Date_From VARCHAR(10);
            DECLARE @Date_To VARCHAR(10);
            SET @Date_From = '''+CONVERT(VARCHAR(10),DATEADD(d,DATEDIFF(d,0,GETDATE()),0)-1,120)+''';
            SET @Date_To = '''+CONVERT(VARCHAR(10),DATEADD(d,DATEDIFF(d,0,GETDATE()),0)-1,120)+''';
            '+ @Sql;

EXECUTE sp_executesql @Sql;
Run Code Online (Sandbox Code Playgroud)

执行后,它返回我的消息(359行受影响).接下来尝试从#TempTable中选择数据时.

Select * From #TempTable;
Run Code Online (Sandbox Code Playgroud)

它回报我:

Msg 208, Level 16, State 0, Line 2
Invalid object name '#TempTable'.
Run Code Online (Sandbox Code Playgroud)

怀疑它只在'选择'部分工作.插入不起作用.如何解决?

sql t-sql temp-tables sql-server-2008 sp-executesql

33
推荐指数
4
解决办法
6万
查看次数

使用触发器记录对数据库表的更改

我正在寻找一种很好的方法来记录我的SQL Server 2005数据库中特定表集上发生的更改.我认为最好的方法是通过触发器来执行更新和删除操作.无论如何都要抓住正在运行的实际语句?一旦我有了声明,我就可以轻松地将其记录到其他地方(其他数据库表).但是,我还没有找到一种简单的方法(如果可能的话)来获取正在运行的SQL语句.

sql sql-server logging sql-server-2005

9
推荐指数
3
解决办法
2万
查看次数