Bạn có thể lưu trữ điều này bằng cách di chuyển các bảng có thể ghi vào một nhóm tệp riêng biệt và làm cho nhóm tệp khác chỉ đọc.
Bước Một - Tạo một filegroup khác nhau
ALTER DATABASE TESTDB ADD FILEGROUP Writable_FG;
Bước Hai - Thêm một tệp dữ liệu để The New filegroup
ALTER DATABASE TESTDB ADD FILE (
NAME = JeanAnn2,
FILENAME = 'D:\MSSQL\TESTDB_Writable_FG_01.ndf',
SIZE = 6MB,
MAXSIZE = 18MB,
FILEGROWTH = 1
) TO FILEGROUP Writable_FG;
Bước Ba - Di chuyển các bảng mà bạn cần có thể ghi được, vào nhóm tập tin mới
Đối với điều này, bạn cần tạo lại chỉ mục nhóm của bảng trên nhóm tệp mới.
CREATE CLUSTERED INDEX CIX_YourTable
ON dbo.YourTable(YourClusteringKeyFields)
WITH DROP_EXISTING
ON [Writable_FG]
hoặc nếu chỉ số nhóm của bạn là độc đáo:
CREATE UNIQUE CLUSTERED INDEX CIX_YourTable
ON dbo.YourTable(YourClusteringKeyFields)
WITH DROP_EXISTING
ON [Writable_FG]
Làm điều này cho tất cả bốn bảng mà bạn cần phải ghi.
Bước Bốn - Tận dụng tối filegroup khác readonly
ALTER DATABASE TESTDB MODIFY FILEGROUP [PRIMARY] READ_ONLY;
Ở đây, người ta cho rằng các filegroup khác là chính.
Nguồn
2017-08-08 10:06:08
có thể trùng lặp của https://stackoverflow.com/questions/2529839/how-to-make-a-table-read-only-in-sql-server – MatSnow
@MatSnow chúng tôi có khoảng 500 + bảng trong cơ sở dữ liệu và chúng tôi cần chỉ cho phép 4 bảng có thể ghi được. Tôi có nên thêm 496 chỉ đọc thay vì làm cho toàn bộ cơ sở dữ liệu như chỉ đọc và cho phép chỉ có 4 ghi? – Developer
AFAIK không có cách nào để chỉ đặt vài bảng để có thể ghi nếu bạn đặt cơ sở dữ liệu chỉ đọc. Tôi sẽ đề nghị bạn đặt quyền phù hợp với nhu cầu của bạn. – MatSnow