본문 바로가기

DBMS/SQL Server

(95)
[SQL Server] 사용중인 포트 확인 및 변경 SQL Server는 기본포트로 1433을 사용하고 있다. 현재 사용중인 포트 확인 및 변경은 SQL Server 구성관리자에서 할 수 있다. Sql Server Configuration Manager -> SQL Server Network Configuration -> Protocols for MSSQLSERVER -> TCP/IP Properties -> IP Addresses -> IPAll 에서 확인 및 변경이 가능하다. 포트 변경 후에는 서비스를 재시작하여야 한다.
[SQL Server] ALTER COLUMN 사용시 열을 수정할 수 없는 경우 INT형 데이터 형식의 컬림이 오버플로 오류가 발생하여 BIGINT형으로 변경해야하는 경우가 있다. 아래와 같이 실행하였을 때 오류가 발생한다. 해당 열에 DEFAULT 제약조건이 걸려있어서 수정할 수 없는 오류이다. 제약조건을 확인해보면 해당 열에 DEFAULT 제약조건이 걸려있음을 확인할 수 있다. 해당 열의 데이터 형식을 변경하기 위해서 1. DEFAULT 제약조건 삭제 2. 데이터 형식 변경 3. 다시 DEFAULT 제약조건 추가 ALTER COLUMN은 명명된 열을 변경하도록 지정한다. 하지만 다음과 같은 열은 수정할 수 없다. 1. 데이터 형식이 timestamp인 열 2. 테이블의 ROWGUIDCOL 3. 계산 열이나 계산 열에 사용된 열 4. 인덱스에 사용된 열 5. CREATE STATI..
[SQL Server] UPDATE 절 사용시 FROM 절, JOIN 사용하기 UPDATE 절에서도 SELECT 절과 마찬가지로 FROM 절과 JOIN 문을 사용할 수 있다. SELECT 절에서의 JOIN 문과 차이가 없다. CREATE TABLE T_1 ( COL1 INT IDENTITY(1,1) , COL2 CHAR(2) ) GO CREATE TABLE T_2 ( COL1 INT IDENTITY(1,1) , COL2 CHAR(2) ) GO INSERT INTO T_1 VALUES ('아'), ('야'), ('어'), ('여') INSERT INTO T_2 VALUES ('가'), ('갸'), ('거'), ('겨') GO SELECT * FROM T_1 SELECT * FROM T_2 GO UPDATE T_1 SET COL2 = B.COL2 FROM T_1 AS A INNER J..
[SQL Server] RPC에 대해 구성되지 않았습니다. 원격 DB의 프로시저 호출시 '~RPC에 대해 구성되지 않았습니다.' 라는 오류가 발생하였다. 이 오류를 해결하기 위해 RPC 내보내기를 활성화 해주면 된다. -- 연결된 서버로부터 로컬 서버로의 RPC 내보내기 활성화 EXEC sp_serveroption 'DB 링크명', 'RPC', TRUE -- 로컬 서버로부터 연결된 서버로의 RPC 내보내기 활성화 EXEC sp_serveroption 'DB 링크명', 'RPC OUT', TRUE 또는 UI를 이용해서 변경할 수도 있다. 서버 개체 - 연결된 서버 - 속성에서 RPC와 RPC 내보내기를 True로 변경해주면 된다.
[SQL Server] UNION을 ORDER BY와 같이 사용할 때 원하는 값 얻기 UNION, UNION ALL을 ORDER BY와 같이 사용할 때 원하는 결과를 얻지 못할 수 있다. 테스트를 위해 테이블을 생성하고 데이터를 삽입하였다. CREATE TABLE dbo.TEST_TBL ( ID INT IDENTITY(1,1) , NAME CHAR(8) , AGE TINYINT , GENDER CHAR(2) , REGDATE DATETIME ) GO INSERT INTO dbo.TEST_TBL VALUES ('김남자', 30, '남', GETDATE()) INSERT INTO dbo.TEST_TBL VALUES ('김여자', 29, '여', GETDATE()) INSERT INTO dbo.TEST_TBL VALUES ('이남자', 35, '남', GETDATE()+1) INSERT INT..
[SQL Server] 테이블 단위 백업 보통 SQL Server는 테이블 백업이 안되는 것으로 알고 있는데 가능하다. 먼저 백업할 테이블이 있는 DB를 선택 후 태스크 → 스크립트 생성 백업하고 싶은 개체 선택 (테이블, 뷰, 저장 프로시저 등...) 백업할 테이블을 선택 스크립팅 옵션 설정에서 고급을 클릭 고급 옵션에서 스크립팅할 테이터 형식을 스키마 및 데이터로 변경한다. (처음엔 스카미로 되어있다.) 스크립트를 저장할 방법을 지정한다. 스크립트 저장 성공 확인 확인해보면 스키마 뿐 아니라 데이터를 저장하는 INSERT 문도 같이 포함된 것을 확인할 수 있다. ※ 100만건의 데이터가 든 테이블을 새 쿼리창에 저장하였을 때 오류가 발생하였다. 하지만 파일로 저장하면 오류 없이 잘 저장된다. 데이터가 많을 때는 파일로 저장하여 백업하자.
[SQL Server] TOP 절에 변수 사용하기 TOP 10 이라고 선언하면 10개의 행만, TOP 15 라고 선언하면 15개의 행만 반환된다. 그렇다면 TOP 절에 변수를 사용할 수 있을까? SQL Server 2005 부터 TOP 절에 변수를 사용할 수 있다. 2000 버전에서 TOP 절에 변수를 사용해보면 오류가 나는 것을 확인할 수 있다. 2005 버전에서 변수를 사용하면 잘 실행된다. 단, TOP (@TOPNUM) 을 선언할 때 ( ) 는 꼭 사용해야 한다. USE PUBS GO DECLARE @TOPNUM INT SET @TOPNUM = 15 SELECT TOP(@TOPNUM) * FROM AUTHORS GO
[SQL Server] SET NOCOUNT ON SET NOCOUNT ON - Transact-SQL 문 또는 저장 프로시저의 영향을 받은 행 수를 나타내는 메시지가 결과 집합의 일부로 반환되지 않도록 한다. SET NOCOUNT 문이 OFF인 상태일 때 SELECT, INSERT, UPDATE, DELETE 의 명령을 실행하면 아래와 같이 영향 받은 행 수를 나타낸다. SET NOCOUNT 문이 ON이면 영향 받은 행 수를 나타내는 메시지가 반환되지 않는다. Transact-SQL 루프가 포함된 프로시저의 경우 SET NOCOUNT를 ON으로 설정하면 네트워크 트래픽이 크게 줄기 때문에 성능이 눈에 띄게 향상된다. 그리고 ON/OFF 둘다 @@ROWCOUNT 함수는 업데이트 된다. 그러므로 프로시저를 생성할 때 습관적으로 SET NOCOUNT ON을..