簡體   English   中英

如何在SQL Server中創建只讀表?

[英]How to make a table Read Only in SQL Server?

我正在更新該表中的一些記錄集,之后我需要將此表只讀。

那么如何在SQL Server中創建一個只讀表?

一個簡單的替代方法,可阻止更新並插入特定表但仍允許刪除:

ALTER TABLE mytable WITH NOCHECK ADD CONSTRAINT chk_read_only CHECK( 1 = 0 )

請注意:這可以避免INSERT和UPDATE,但允許DELETE。

如果你真的需要一張桌子才能真正閱讀,你也可以:

a)將其放入自己的數據庫或
b)將它放在一個文件組上並標記為只讀,這是如何:

USE [master]

GO

ALTER DATABASE [csvtosp] ADD FILEGROUP [READONLYTABLES]

GO

ALTER DATABASE [csvtosp] ADD FILE ( NAME = N'mydb_readonly_tables', FILENAME = N'G:\SQL2005DATA\mydb_readonly_tables.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [READONLYTABLES]

GO

USE csvtosp

GO

DROP TABLE mytable

CREATE TABLE mytable (

    somedata    char(8000) not null

) ON READONLYTABLES

GO

有關此主題的更多詳細信息,請訪問:

如何在SQL Server中使表只讀

  1. 使用rollback trans觸發
  2. 只讀文件組
  3. 不授予插入/更新/刪除權限

3號可能是最好的做法。 例如,如果您的連接是db_owner,那么觸發器可以被禁用觸發器或者將表移動到另一個文件組。

如果您希望它只讀給普通大眾,但仍希望能夠在以后編輯該表,您可能需要考慮為數據庫創建多個用戶並為該數據庫授予不同的權限 - 理想情況下您應該是無論如何這樣做,並不允許一般公眾訪問alter table,truncate等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM