Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie mache ich eine Tabelle in SQL Server schreibgeschützt?

Eine einfache Alternative, die das Aktualisieren und Einfügen in einer bestimmten Tabelle blockiert, aber dennoch das Löschen zulässt:

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

Beachten Sie:Dies vermeidet INSERTs und UPDATEs, lässt aber DELETEs zu.

Wenn Sie wirklich brauchen, dass eine Tabelle wirklich nur gelesen werden kann, können Sie auch:

a) es in seine eigene Datenbank stellen oder
b) es in eine Dateigruppe stellen und diese als schreibgeschützt markieren, so geht's:

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

Weitere Einzelheiten zu diesem Thema finden Sie hier:

So machen Sie eine Tabelle in SQL Server schreibgeschützt