SQL Server 의 숨겨진 기능은 무엇입니까 ?
예를 들어, 문서화되지 않은 시스템 저장 프로 시저, 매우 유용하지만 충분히 문서화되지 않은 작업을 수행하는 트릭?
답변
모든 위대한 답변에 대해 모두에게 감사합니다!
저장 프로 시저
- sp_msforeachtable : ‘?’명령을 실행합니다 각 테이블 이름으로 대체 됨 (v6.5 이상)
- sp_msforeachdb : ‘?’명령을 실행합니다 각 데이터베이스 이름으로 대체 (v7 이상)
- sp_who2 : sp_who와 비슷하지만 블록 문제 해결에 대한 더 많은 정보 (v7 이상)
- sp_helptext : 저장 프로 시저의 코드를 원하면보기 및 UDF
- sp_tables : 범위 내에서 데이터베이스의 모든 테이블 및 뷰 목록을 반환합니다.
- sp_stored_procedures : 모든 저장 프로 시저 목록을 반환
- xp_sscanf : 문자열에서 각 형식 인수로 지정된 인수 위치로 데이터를 읽습니다.
- xp_fixeddrives : : 가장 큰 여유 공간이있는 고정 드라이브 찾기
- sp_help : 테이블 구조, 테이블의 인덱스 및 제약 조건을 알고 싶다면 또한 뷰와 UDF. 바로 가기는 Alt + F1입니다.
짧은 발췌
- 무작위 순서로 행 반환
- 마지막으로 수정 한 날짜 별 모든 데이터베이스 사용자 개체
- 반환 날짜 만
- 현재 주 어딘가에 날짜가 기록 된 레코드를 찾으십시오.
- 지난 주에 발생한 날짜를 기록하십시오.
- 현재 주가 시작되는 날짜를 반환합니다.
- 지난 주 시작 날짜를 반환합니다.
- 서버에 배포 된 절차의 텍스트를 참조하십시오.
- 데이터베이스에 대한 모든 연결을 삭제하십시오.
- 테이블 체크섬
- 행 체크섬
- 데이터베이스에서 모든 절차를 삭제
- 복원 후 로그인 ID를 올바르게 다시 매핑
- INSERT 문에서 스토어드 프로 시저 호출
- 키워드로 절차 찾기
- 데이터베이스에서 모든 절차를 삭제
- 프로그래밍 방식으로 데이터베이스에 대한 트랜잭션 로그를 쿼리하십시오.
기능
- 해시 바이트 ()
- EncryptByKey
- PIVOT 명령
기타
- 연결 문자열 엑스트라
- TableDiff.exe
- 로그온 이벤트에 대한 트리거 (서비스 팩 2의 새로운 기능)
- PCC (지속 계산 열)로 성능 향상
- sys.database_principles의 DEFAULT_SCHEMA 설정
- 강제 매개 변수화
- Vardecimal 저장소 형식
- 몇 초 만에 가장 인기있는 검색어 파악
- 확장 가능한 공유 데이터베이스
- SQL Management Studio의 테이블 / 저장 프로 시저 필터 기능
- 추적 플래그
GO
배치를 반복 한 후의 번호- 스키마를 사용한 보안
- 내장 된 암호화 기능, 뷰 및 트리거가있는 기본 테이블을 사용하여 암호화
답변
Management Studio에서 GO 배치 종료 마커 뒤에 숫자를 넣어 배치가 해당 횟수만큼 반복되도록 할 수 있습니다.
PRINT 'X'
GO 10
‘X’를 10 번 인쇄합니다. 이렇게하면 반복적 인 작업을 수행 할 때 번거로운 복사 / 붙여 넣기에서 벗어날 수 있습니다.
답변
많은 SQL Server 개발자는 여전히 DELETE, INSERT 및 UPDATE 문 에서 OUTPUT 절 (SQL Server 2005 이상)에 대해 알지 못하는 것 같습니다 .
행이 삽입, 갱신 또는 삭제 한 알 매우 유용 할 수 있고, OUTPUT 절은 아주 쉽게 할 수 있습니다 – 그것은라는 “가상”테이블에 액세스 할 수 있도록 inserted
하고 deleted
(트리거에서 등) :
DELETE FROM (table)
OUTPUT deleted.ID, deleted.Description
WHERE (condition)
OUTPUT 절을 사용하여 INT IDENTITY 기본 키 필드가있는 테이블에 값을 삽입하는 경우 삽입 된 새 ID를 즉시 얻을 수 있습니다.
INSERT INTO MyTable(Field1, Field2)
OUTPUT inserted.ID
VALUES (Value1, Value2)
그리고 업데이트하는 경우 변경된 내용을 아는 것이 매우 유용 할 수 있습니다.이 경우 inserted
UPDATE 이후의 새 값을 deleted
나타내며 UPDATE 전의 이전 값 을 나타냅니다.
UPDATE (table)
SET field1 = value1, field2 = value2
OUTPUT inserted.ID, deleted.field1, inserted.field1
WHERE (condition)
많은 정보가 리턴되면 OUTPUT의 출력을 임시 테이블 또는 테이블 변수 ( OUTPUT INTO @myInfoTable
) 로 경로 재 지정할 수도 있습니다 .
매우 유용하며 알려진 바가 거의 없습니다!
마크
답변
sp_msforeachtable
: ‘?’명령을 실행합니다 각 테이블 이름으로 대체되었습니다. 예 :
exec sp_msforeachtable "dbcc dbreindex('?')"
각 테이블에 대해 최대 3 개의 명령을 실행할 수 있습니다
exec sp_msforeachtable
@Command1 = 'print ''reindexing table ?''',
@Command2 = 'dbcc dbreindex(''?'')',
@Command3 = 'select count (*) [?] from ?'
또한, sp_MSforeachdb
답변
연결 문자열 엑스트라 :
MultipleActiveResultSets = true;
따라서 ADO.Net 2.0 이상은 단일 데이터베이스 연결에서 여러 개의 정방향 전용 읽기 전용 결과 집합을 읽으므로 많은 양의 읽기를 수행하는 경우 성능을 향상시킬 수 있습니다. 여러 가지 쿼리 유형을 수행하더라도이를 설정할 수 있습니다.
응용 프로그램 이름 = MyProgramName
이제 sysprocesses 테이블을 쿼리하여 활성 연결 목록을 보려면 프로그램 이름이 “.Net SqlClient Data Provider”대신 program_name 열에 나타납니다.
답변
TableDiff.exe
- 테이블 차이 도구를 사용하면 소스 테이블과 대상 테이블 또는 뷰 간의 차이를 발견하고 조정할 수 있습니다. Tablediff Utility는 스키마와 데이터의 차이점을보고 할 수 있습니다. tablediff의 가장 인기있는 기능은 테이블 간의 차이를 조정하는 대상에서 실행할 수있는 스크립트를 생성 할 수 있다는 것입니다.
답변
무작위 순서로 행을 리턴하는 덜 알려진 TSQL 기술 :
-- Return rows in a random order
SELECT
SomeColumn
FROM
SomeTable
ORDER BY
CHECKSUM(NEWID())
답변
Management Studio에서 다음을 통해 쉼표로 구분 된 테이블 열 목록을 빠르게 얻을 수 있습니다.
- 개체 탐색기에서 지정된 테이블 아래의 노드를 확장합니다 (따라서 열, 키, 제약 조건, 트리거 등의 폴더가 표시됨)
- 열 폴더를 가리키고 쿼리로 드래그하십시오.
이것은 테이블을 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 스크립트 테이블 …을 선택한 다음 삽입을 선택하여 반환 된 heinous 형식을 사용하지 않으려는 경우에 유용합니다.이 트릭은 다른 폴더와 함께 작동하여 폴더 내에 포함 된 쉼표로 구분 된 이름 목록.