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