2010-03-27 7 views
19

이 테이블을 읽기 전용으로 설정해야하는 경우 해당 테이블의 일부 레코드 집합을 업데이트하고 있습니다.SQL Server에서 테이블을 읽기 전용으로 만드는 방법은 무엇입니까?

SQL Server에서 테이블을 읽기 전용으로 만드는 방법은 무엇입니까? 삭제할 수 있도록 계속 업데이 트를 차단하고 특정 테이블에 삽입하지만 것

+0

몇 가지 좋은 답변이 여기에 있습니다. 내 질문은 : 테이블은 누구에게 읽기 전용이어야 하는가? SysAdmins는 시간과 노력이 들지만 항상 아무 것도 할 수있는 권한이 있습니다. –

+1

시스템 관리자 이외의 사용자 – Jeyavel

답변

29

간단한 대안 :

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

는주의 :이 인서트 및 업데이트를 피할 수 있지만, h 제한 할 수 있습니다.

가) 자체 데이터베이스 또는
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 

이 주제에 대한 자세한 내용은 여기 :

How to make a table Read Only in SQL Server

+2

이 답변을 개선하려고했지만 수정 사항이 거부되었습니다. 파일 그룹을 읽기 전용으로 만드는 방법에 대한 누락 된 코드를 추가하십시오 :'ALTER DATABASE [csvtosp] 수정 FILEGROUP [READONLYTABLES] READONLY' – Baodad

+0

1. 파일 그룹'READONLYTABLES'은 READONLY가 아닙니다 2. 다른 파일 그룹으로 이동하기 위해 테이블을 삭제할 필요가 없습니다. . 클러스터형 인덱스를 다시 작성하면됩니다. –

2

일반인에게 읽기 전용으로 쓰기를 원하지만 나중에 테이블을 편집 할 수 있기를 원하면 데이터베이스에 대해 여러 사용자를 작성하고 해당 데이터베이스에 다른 권한을 부여하는 것이 좋습니다. 테이블을 변경하는 것을 허용 어쨌든 아닌 일반 대중 접근이 일을 할 만 파일 그룹

  • 가 삽입/업데이트를 부여하지 마십시오 읽기 롤백 트랜스
  • 와 등

  • 7
    1. 트리거를 절단/삭제 권한

    아마도 3 번이 가장 좋습니다. 예를 들어 연결이 db_owner 인 경우 트리거는 트리거를 사용하지 않도록 설정하거나 테이블을 다른 파일 그룹으로 이동할 수 있습니다.

    관련 문제