从c#调用SP时,临时表变量似乎不起作用

时间:2012-05-08 08:29:36

标签: c# stored-procedures temp-tables

我从C#代码调用存储过程。此SP创建临时表以存储某些值。当我从查询分析器运行此SP时,一切似乎都很好。但是当我从c#代码运行时,临时表没有被创建。

我使用的是@tableName而不是#tableName。

临时表仅在存储过程中引用。 SP之外不需要它们。 enter image description here 我有什么遗漏的吗?

2 个答案:

答案 0 :(得分:0)

当会话结束时会自动删除临时表,你确定它不仅仅是在C#代码完成后被删除吗? Review the docs了解更多信息。

答案 1 :(得分:0)

这是因为您在查询分析器中使用的用户凭据('sa'可能?)可能与C#应用程序使用的凭据不同。

用户需要访问系统数据库tempdb(读/写),如果他不能在调用存储过程时创建那些时态表(在过程中)。

为C#使用或测试您的C#app登录的用户提供对tempdb的访问权限,使用您在查询分析器(或任何其他dbadmin用户)中使用的相同用户来测试它是否有效。

根据您的评论询问有关SQL Profiler的声明。

步骤1:打开sql profiler并创建新的跟踪。转到标签事件选择。并取消标记安全审计和会话

enter image description here

步骤2:选中右下角的显示所有事件复选框,您将在网格上获得多个事件。转到存储过程和T-SQL并在下面的屏幕截图中标记。

enter image description here

第3步:运行它。