Как сделать таблицу Read Only in SQL Server?

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

Таким образом, как сделать таблицу Read Only in SQL Server?

22
задан Brian Tompsett - 汤莱恩 21 January 2017 в 22:17
поделиться

3 ответа

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

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

9
ответ дан 29 November 2019 в 04:26
поделиться

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

3
ответ дан 29 November 2019 в 04:26
поделиться

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

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

Имейте в виду: это позволяет избежать операций INSERT и UPDATE, но позволяет УДАЛЯЕТ.

Если вам действительно нужно, чтобы таблица была доступна только для чтения, вы также можете:

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

34
ответ дан 29 November 2019 в 04:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: