[운영] 서버 데이터베이스 SQL 문장 정리(3)
6053 단어 서버 운영
Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //
2. 데이터베이스 암호화:
select encrypt(' ')
select pwdencrypt(' ')
select pwdcompare(' ',' ') = 1-- ; encrypt(' ')
select pwdencrypt(' ')
select pwdcompare(' ',' ') = 1-- ;
3. 테이블의 필드를 다시 가져옵니다.
declare @list varchar(1000),
@sql nvarchar(1000)
select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name=' A'
set @sql='select '+right(@list,len(@list)-1)+' from A'
exec (@sql)
4. 하드 드라이브 파티션 보기:
EXEC master..xp_fixeddrives
5. A, B 테이블이 동일한지 비교합니다.
if (select checksum_agg(binary_checksum(*)) from A)
=
(select checksum_agg(binary_checksum(*)) from B)
print ' '
else
print ' '
6. 모든 이벤트 탐색기 프로세스를 죽이기:
DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses
WHERE program_name IN('SQL profiler',N'SQL ')
EXEC sp_msforeach_worker '?'
7. 로깅 검색: N조 로깅으로 시작
Select Top N * From
-----------------------N에서 M줄로 기록(주 색인 ID가 있어야 함)
Select Top M-N * From Where ID in (Select Top M ID From ) Order by ID Desc
---------------------------N에서 끝까지 기록
Select Top N * From Order by ID Desc
예를 들어 1: 한 장의 테이블에 1만여 개의 기록이 있는데 표의 첫 번째 필드인 Recid는 자체 성장 필드이고 SQL 문장을 써서 표의 31번째에서 40번째 기록을 찾아낸다.
select top 10 recid from A where recid not in(select top 30 recid from A)
분석: 이렇게 쓰면 문제가 생길 수 있습니다. 만약recid가 테이블에 논리적 인덱스가 존재한다면.
select top 10 recid from A where...는 인덱스에서 찾고, 뒤에 있는 select top 30 recid from A는 데이터 테이블에서 찾습니다. 이렇게 하면 인덱스의 순서가 데이터 테이블의 순서와 일치하지 않을 수 있기 때문에 원래 얻고 싶은 데이터가 아닙니다.
솔루션
예2: 조회표의 마지막 항목으로 기록하고 이 표가 얼마나 많은 데이터와 표 구조를 가지고 있는지 모른다.
set @s = 'select top 1 * from T where pid not in (select top ' + str(@count-1) + ' pid from T)'
print @s exec sp_executesql @s
9: 현재 데이터베이스에 있는 모든 사용자 테이블 가져오기
select Name from sysobjects where xtype='u' and status>=0
10: 테이블의 모든 필드 가져오기
select name from syscolumns where id=object_id(' ')
select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = ' ')
두 가지 방식의 효과는 같다
11: 테이블과 관련된 보기, 저장 프로세스, 함수 보기
select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '% %'
12: 현재 데이터베이스의 모든 저장 프로세스 보기
select name as from sysobjects where xtype='P'
13: 사용자가 만든 모든 데이터베이스 조회
select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')
혹은
select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01
14: 테이블의 필드와 데이터 형식을 조회합니다
select column_name,data_type from information_schema.columns where table_name = ' '
15: 서로 다른 서버 데이터베이스 간의 데이터 작업
-- 링크 서버 만들기
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', ' ip '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, ' ', ' '
-- 질의 예
select * from ITSV. .dbo.
-- 예제 가져오기
select * into from ITSV. .dbo.
- 나중에 사용하지 않을 때 링크 서버 제거
exec sp_dropserver 'ITSV ', 'droplogins '
- 원격/랜 데이터 연결(openrowset/openquery/opendatasource)
--1、openrowset
-- 질의 예
select * from openrowset( 'SQLOLEDB ', 'sql '; ' '; ' ', .dbo. )
-- 로컬 테이블 생성
select * into from openrowset( 'SQLOLEDB ', 'sql '; ' '; ' ', .dbo. )
- 로컬 테이블을 원격 테이블로 가져오기
insert openrowset( 'SQLOLEDB ', 'sql '; ' '; ' ', .dbo. )
select *from
-- 로컬 테이블 업데이트
update b
set b. A=a. A
from openrowset( 'SQLOLEDB ', 'sql '; ' '; ' ', .dbo. )as a inner join b
on a.column1=b.column1
--openquery 사용법은 연결을 만들어야 합니다
- 먼저 연결 생성 링크 서버 만들기
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', ' ip '
-- 질의
select * FROM openquery(ITSV, 'SELECT * FROM .dbo. ')
- 로컬 테이블을 원격 테이블로 가져오기
insert openquery(ITSV, 'SELECT * FROM .dbo. ')
select * from
-- 로컬 테이블 업데이트
update b
set b. B=a. B
FROM openquery(ITSV, 'SELECT * FROM .dbo. ') as a inner join b on a. A=b. A
--3、opendatasource/openrowset
SELECT * FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID= ;Password= ' ).test.dbo.roy_ta
- 로컬 테이블을 원격 테이블로 가져오기 i
nsert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID= ;Password= '). .dbo.
select * from
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[운영] 서버 데이터베이스 SQL 문장 정리(3)-----------------------N에서 M줄로 기록(주 색인 ID가 있어야 함) ---------------------------N에서 끝까지 기록 예를 들어 1: 한 장의 테이블에 1만여 개의 기록이 있는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.