【发布时间】:2011-05-06 23:41:22
【问题描述】:
我需要获取表格的最后更新时间戳。此操作将由对所有存储过程具有 GRANT EXEC 权限的 dbowner 执行。任何想法如何做到这一点?这是我尝试过的。
我尝试使用 SMO 获取此信息,但由于缺少权限,它返回一个空表对象。
using (SqlConnection connection = new SqlConnection(connectionString))
{
ServerConnection serverConnection = new ServerConnection(connection);
Server server = new Server(serverConnection);
Database database = server.Databases["MyDb"];
Table table = database.Tables["MyTable"]; // here table is null for dbowner user, but a valid object for a super user
DateTime lastModified = table.DateLastModified;
}
也尝试创建一个新的存储过程,但是当我调用它时,我得到了The user does not have permission to perform this action.
CREATE PROCEDURE getTableLastModifiedDate
(
@TableName nvarchar(max)
)
AS
BEGIN
SELECT last_user_update FROM sys.dm_db_index_usage_stats
WHERE OBJECT_NAME(OBJECT_ID)=@TableName AND database_id = DB_ID(DB_NAME())
END
GO
【问题讨论】:
标签: sql tsql sql-server-2008 smo