Простая альтернатива, которая блокирует обновление и вставку в конкретную таблицу, но при этом разрешает удаление:
ALTER TABLE mytable WITH NOCHECK ADD CONSTRAINT chk_read_only CHECK( 1 = 0 )
Имейте в виду: это позволяет избежать вставок и обновлений, но позволяет удалять.
Если вам действительно нужна таблица, предназначенная только для чтения, вы также можете:
а) положить его в свою базу данных или
б) поместите его в файловую группу и отметьте только для чтения, вот как:
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