Мне нужно получить последнюю обновленную метку времени для таблицы.Эта операция должна быть выполнена владельцем dbowner, у которого есть разрешения GRANT EXEC для всех sprocs.Есть идеи, как это сделать?Вот что я пытался.
Я пытался получить эту информацию с помощью 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;
}
Также попытался создать новый sproc,но когда я звоню, я получаю 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