小编web*_*orm的帖子

角色 db_owner 允许什么

我一直在尝试解决无法查看 SQL Server 2012 数据库中某些表的登录问题。在这样做时,我发现我不太了解db_owner角色中的成员资格允许的内容。我可以理解其他角色,db_datareader and db_datawriter但我对db_owner允许的内容仍然感到困惑。

security sql-server sql-server-2012

16
推荐指数
1
解决办法
4万
查看次数

将有关谁删除记录的信息传递给删除触发器

在设置审计跟踪时,跟踪谁在表中更新或插入记录没有问题,但是,跟踪谁删除记录似乎更成问题。

我可以通过在插入/更新字段中包含“UpdatedBy”来跟踪插入/更新。这允许 INSERT/UPDATE 触发器通过inserted.UpdatedBy. 但是,使用删除触发器不会插入/更新数据。有没有办法将信息传递给删除触发器,以便它知道谁删除了记录?

这是一个插入/更新触发器

ALTER TRIGGER [dbo].[trg_MyTable_InsertUpdate] 
ON [dbo].[MyTable]
FOR INSERT, UPDATE
AS  

INSERT INTO AuditTable (IdOfRecordedAffected, UserWhoMadeChanges) 
VALUES (inserted.ID, inserted.LastUpdatedBy)
FROM inserted 
Run Code Online (Sandbox Code Playgroud)

使用 SQL Server 2012

trigger sql-server audit sql-server-2012

13
推荐指数
2
解决办法
2万
查看次数

表有 14 GB 的未使用空间 - 如何缩小表大小

我使用以下脚本从我的数据库中收集数据,即 Azure 上的 SQL Server。

-- Script to run against database to gather metrics

CREATE TABLE #SpaceUsed (name sysname,rows bigint,reserved sysname,data sysname,index_size sysname,unused sysname)

DECLARE @Counter int 
DECLARE @Max int 
DECLARE @Table sysname

SELECT  name, IDENTITY(int,1,1) ROWID 
INTO       #TableCollection 
FROM    sysobjects 
WHERE xtype = 'U' 
ORDER BY lower(name)

SET @Counter = 1 
SET @Max = (SELECT Max(ROWID) FROM #TableCollection)

WHILE (@Counter <= @Max) 
    BEGIN 
        SET @Table = (SELECT name FROM #TableCollection WHERE ROWID = @Counter) 
        INSERT INTO #SpaceUsed 
        EXECUTE sp_spaceused …
Run Code Online (Sandbox Code Playgroud)

sql-server database-size azure-sql-database

6
推荐指数
1
解决办法
2万
查看次数