Как сделать таблицу только для чтения в SQL Server? - PullRequest
22 голосов
/ 27 марта 2010

Я обновляю некоторый набор записей в этой таблице, после чего мне нужно сделать эту таблицу доступной только для чтения.

Так как сделать таблицу только для чтения в SQL Server?

Ответы [ 3 ]

34 голосов
/ 27 марта 2010

Простая альтернатива, которая блокирует обновление и вставку в конкретную таблицу, но при этом разрешает удаление:

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

8 голосов
/ 27 марта 2010
  1. Триггер с откатом транс
  2. Файловая группа только для чтения
  3. Не предоставлять разрешения на вставку / обновление / удаление

Номер 3, вероятно, лучшая практика. Например, если ваше соединение, например, db_owner, то триггер можно отключить, или переместить таблицу в другую файловую группу.

3 голосов
/ 27 марта 2010

Если вы хотите, чтобы это было доступно только для чтения широкой публике, но при этом хотите иметь возможность редактировать таблицу позднее, вы можете рассмотреть возможность создания нескольких пользователей для базы данных и предоставления различных разрешений для этой базы данных - в идеале Вы должны делать это в любом случае и не позволять широкой публике доступ к изменению таблицы, усечению и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...