Я обновляю некоторый набор записей в этой таблице, после чего мне нужно сделать эту таблицу только для чтения.Как сделать таблицу Только для чтения в SQL Server?
Как сделать таблицу Только для чтения на SQL Server?
Я обновляю некоторый набор записей в этой таблице, после чего мне нужно сделать эту таблицу только для чтения.Как сделать таблицу Только для чтения в SQL Server?
Как сделать таблицу Только для чтения на SQL Server?
Простая альтернатива, которая будет блокировать обновление и вставить на конкретной таблице, но по-прежнему позволяет удалять:
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
Для получения более подробной информации по этому вопросу, идут сюда:
Попытался улучшить этот ответ, но мое редактирование было отклонено. Пожалуйста, добавьте недостающий код для того, как сделать файловую группу только для чтения: 'ALTER DATABASE [csvtosp] MODIFY FILEGROUP [READONLYTABLES] READONLY' – Baodad
1. Filegroup' READONLYTABLES' не READONLY 2. Нет необходимости отбрасывать таблицу, чтобы переместить ее в другую файловую группу , Вам просто нужно воссоздать кластеризованный индекс. –
Если вы хотите, чтобы это было прочитано только для широкой публики, но все же хотите иметь возможность редактировать таблицу позднее, вам может потребоваться создать несколько пользователей для базы данных и предоставить разные разрешения для этой базы данных - в идеале вы должны делать это в любом случае и не позволяет общему доступу общественности к материалу изменить таблицу, усечение и т.д.
Номер 3, вероятно, является наилучшей практикой. Например, если ваше соединение является db_owner, например, триггер может отключить триггер или переместить таблицу в другую файловую группу в любом случае.
Несколько полезных ответов здесь. Мой вопрос: для кого таблица должна быть только для чтения? SysAdmins всегда имеют право что-либо делать, хотя это может занять время и силы. –
, кроме пользователей системного администратора – Jeyavel