首页 > 解决方案 > 在 SQL Server 中创建具有只读访问权限的临时表

问题描述

我目前正在编写一个 SQL 脚本。因为我根本不是专家,所以这可能会带我永远。我对从中提取初始数据的数据库具有只读访问权限,但是我想创建一个#TempTable。当我尝试这样做时,它似乎创建了它(至少我没有收到任何错误)但是当我尝试查看它的内容时,我收到一个错误,说我没有查看权限。

我似乎也无权访问 Drop Table - 我猜这也是由于只读状态。

所以我想知道有没有办法解决这个问题?我可以将“temptable”存储在我的 PC 上本地吗?或者我还能做些什么吗?

在此先感谢,

标签: sqlsql-server

解决方案


关闭连接时会自动删除临时表。如果您是在存储过程中或从 SSMS 执行此工作,那么这不会影响您,但如果您是从 .NET(或另一种编程语言)执行此操作并且您正在连接/断开连接,或者从一个脚本加载它并且尝试从报告中读取它(例如),然后不,该表对于创建它的会话/连接以外的任何会话/连接都将不可见或不存在。

如果您需要几分钟,并且您打算连接/断开连接(超过零次),您应该创建一个表。您可以在自己的架构下执行此操作,也可以选择一个听起来临时的名称。

前任。如果我以 Domain\DataUser1 身份连接,我的架构是 [Domain\DataUser1]

SELECT UserName FROM LoggingTable
INTO TABLE [Domain\DataUser1].TempTable1
--I need those square brackets around my schema because of the \

这将在我的用户架构下创建一个表。我可以从另一个连接查询它

SELECT * FROM [Domain\DataUser1].TempTable1

哦。完成后不要忘记删除临时表:

DROP TABLE [Domain\DataUser1].TempTable1
-- or, if you intend to keep using it --
TRUNCATE TABLE [Domain\DataUser1].TempTable1

推荐阅读