0

我正在从 C# 代码调用存储过程。该 SP 创建临时表来存储一些值。当我从查询分析器运行这个 SP 时,一切似乎都很好。但是当我从 c# 代码运行它时,没有创建临时表。

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

临时表仅在存储过程中被引用。SP 之外不需要它们。 在此处输入图像描述 有什么我错过的吗?

4

2 回答 2

0

会话结束时会自动删除临时表,您确定它不只是在 C# 代码完成后被删除吗?查看文档以获取更多信息。

于 2012-05-08T08:33:25.910 回答
0

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

用户需要访问系统数据库 tempdb(读/写),否则在调用存储过程时无法创建这些临时表(在过程内)。

向 C# 使用的用户授予对 tempdb 的访问权限,或者使用您在查询分析器中使用的同一用户(或任何其他 dbadmin 用户)测试您的 C# 应用程序登录,以测试它是否有效。

根据您通过语句询问 SQL Profiler 的评论。

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

在此处输入图像描述

第 2 步:选中右下角的 Show all events 复选框,您将在网格上看到几个事件。转到存储过程和 T-SQL 并在下面的屏幕截图中标记它们。

在此处输入图像描述

第三步:运行它。

于 2012-05-08T08:48:13.923 回答