'SQL Server 2005' 카테고리의 다른 글
SQL 책 추천 (0) | 2008.08.26 |
---|---|
Why you want to be restrictive with shrink of database files (0) | 2008.08.22 |
output 의 사용 (0) | 2008.07.22 |
안정적인 데이타베이스 구축과 장애 복구 전략 (0) | 2008.07.16 |
DSN ADD VB Script (0) | 2008.07.15 |
'SQL Server 2005'에 해당되는 글 50건
SQL 책 추천 (0) | 2008.08.26 |
---|---|
Why you want to be restrictive with shrink of database files (0) | 2008.08.22 |
output 의 사용 (0) | 2008.07.22 |
안정적인 데이타베이스 구축과 장애 복구 전략 (0) | 2008.07.16 |
DSN ADD VB Script (0) | 2008.07.15 |
북스온라인 보면 잘 나오고 어딘가 질문이 있어서 하나 만들어 둡니다.
OUTPUT 절의 활용
if object_id ('Seat') is not null
drop table Seat
go
if object_id ('reservedSeat') is not null
drop table reservedSeat
go
create table Seat
( seatNo int
, seatRow char(1)
, isReserved bit
)
go
set nocount on
begin tran
insert into Seat values (1,'a',0)
insert into Seat values (2,'a',0)
insert into Seat values (3,'a',0)
insert into Seat values (4,'a',0)
insert into Seat values (5,'a',0)
commit tran
go
create table reservedSeat
(reservedNo int
,seatNo int
,seatRow char(1)
)
go
UPDATE SEAT
SET ISRESERVED = 1
OUTPUT INSERTED.SEATNO
, INSERTED.SEATNO
, INSERTED.SEATROW
INTO RESERVEDSEAT
WHERE
SEATNO IN (1,2,3)
AND ISRESERVED <> 1
GO
SELECT @@ROWCOUNT
GO
-- 반드시 적용된 개수를 확인해서 COMMIT 과 ROLLBACK 처리를 해주어야 합니다.
왕눈봄이(minsouk1) |
[출처] output 의 사용 (sqlmvp) |작성자 왕눈봄이
Why you want to be restrictive with shrink of database files (0) | 2008.08.22 |
---|---|
Inside Microsoft SQL 2005.TheStorage.chm (0) | 2008.07.23 |
안정적인 데이타베이스 구축과 장애 복구 전략 (0) | 2008.07.16 |
DSN ADD VB Script (0) | 2008.07.15 |
데이터베이스간 제약조건 인덱스 비교검사 (0) | 2008.07.14 |
Inside Microsoft SQL 2005.TheStorage.chm (0) | 2008.07.23 |
---|---|
output 의 사용 (0) | 2008.07.22 |
DSN ADD VB Script (0) | 2008.07.15 |
데이터베이스간 제약조건 인덱스 비교검사 (0) | 2008.07.14 |
Celko - Thinking in Sets - Auxiliary, Temporal and Virtual Tables in SQL (Elsevier, 2008) (0) | 2008.07.10 |
수십대의 장비에 ODBC 세팅을 해야한다 당신이라면 어찌 하겠는가?
협찬 : 주언형아.ㅋㅋ
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"
strValueName = "PerfMon"
strValue = "SQL Server"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strKeyPath = "SOFTWARE\ODBC\ODBC.INI\Script Repository"
objReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath
strKeyPath = "SOFTWARE\ODBC\ODBC.INI\Script Repository"
strValueName = "Database"
strValue = "ScriptCenter"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strValueName = "Driver"
strValue = "C:\WINDOWS\System32\SQLSRV32.dll"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strValueName = "Server"
strValue = "pc_jecha"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strValueName = "trusted_Connection"
strValue = "Yes"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
output 의 사용 (0) | 2008.07.22 |
---|---|
안정적인 데이타베이스 구축과 장애 복구 전략 (0) | 2008.07.16 |
데이터베이스간 제약조건 인덱스 비교검사 (0) | 2008.07.14 |
Celko - Thinking in Sets - Auxiliary, Temporal and Virtual Tables in SQL (Elsevier, 2008) (0) | 2008.07.10 |
권한 관리^^ (0) | 2008.07.08 |
-- 제약 조건이 제대로 같은지 수량도 검사
select object_name(parent_object_id), count(name) from sys.objects
where type= 'D'
group by object_name(parent_object_id)
order by 1
select count(*) from sys.objects where type = 'D'
-- 인덱스 검사
-- 인덱스 한번에 쫙 검사
select object_name(object_id), count(*) cnt from sys.indexes
group by object_name(object_id)
select count(*) from sys.indexes
[출처] 데이터베이스간 제약조건 인덱스 비교검사|작성자 킬라오너
안정적인 데이타베이스 구축과 장애 복구 전략 (0) | 2008.07.16 |
---|---|
DSN ADD VB Script (0) | 2008.07.15 |
Celko - Thinking in Sets - Auxiliary, Temporal and Virtual Tables in SQL (Elsevier, 2008) (0) | 2008.07.10 |
권한 관리^^ (0) | 2008.07.08 |
xp_ReadErrorLog (1) | 2008.07.08 |
요거요거~ 무슨 내용일까~ 궁금하당.ㅋㅋ
슬슬 봐야 할듯.ㅋ
DSN ADD VB Script (0) | 2008.07.15 |
---|---|
데이터베이스간 제약조건 인덱스 비교검사 (0) | 2008.07.14 |
권한 관리^^ (0) | 2008.07.08 |
xp_ReadErrorLog (1) | 2008.07.08 |
MSSQL2005 최대 가용 인스턴스 수(컴퓨터당) (0) | 2008.07.07 |
-- 권한 생성
-- 로그인 생성
exec sp_addlogin 'judy','1136','AdventureWorks'
-- db access 권한
use AdventureWorks
go
exec sp_grantdbaccess 'judy'
go
-- db roll 권한
exec sp_addrolemember 'db_owner','judy'
-- exec sp_addsrvrolemember '아이디','sysadmin'
-- 기본 스키마 변경
alter user judy
WITH DEFAULT_SCHEMA = dbo;
go
---------------------------------------------------------
-- 마스터 프로시져 만들기
USE MASTER
GO
IF OBJECT_ID ('SP_PRIV') IS NOT NULL
DROP PROC SP_PRIV
GO
CREATE PROC SP_PRIV
(
@SELECT_SQL VARCHAR(8000) = ''
, @EXECUTE_SQL VARCHAR(8000) = ''
, @EXECUTE INT = 0
)
AS
DECLARE
@CNT INT
, @IDX INT
, @OBJNAME VARCHAR(1000)
, @SQL VARCHAR(8000)
, @NOT_IN_LIST VARCHAR(8000)
SELECT @CNT = 0 , @OBJNAME ='', @SQL =''
IF OBJECT_ID ('TEMPDB..##TBLX') IS NOT NULL DROP TABLE ##TBLX
CREATE TABLE ##TBLX ( IDX INT IDENTITY(1,1), OBJNAME VARCHAR(1000))
SET @NOT_IN_LIST ='
AND NAME NOT IN (
''dt_whocheckedout_u'',''dt_whocheckedout'',''dt_verstamp007'',''dt_verstamp006'',''dt_vcsenabled'',''dt_validateloginparams_u''
,''dt_validateloginparams'',''dt_setpropertybyid_u'',''dt_setpropertybyid'',''dt_removefromsourcecontrol'',''dt_isundersourcecontrol_u''
,''dt_isundersourcecontrol'',''dt_getpropertiesbyid_vcs_u'',''dt_getpropertiesbyid_vcs'',''dt_getpropertiesbyid_u'',''dt_getpropertiesbyid''
,''dt_getobjwithprop_u'',''dt_getobjwithprop'',''dt_generateansiname'',''dt_dropuserobjectbyid'',''dt_droppropertiesbyid''
,''dt_displayoaerror_u'',''dt_displayoaerror'',''dt_checkoutobject_u'',''dt_checkoutobject'',''dt_checkinobject_u'',''dt_checkinobject''
,''dt_adduserobject_vcs'',''dt_adduserobject'',''dt_addtosourcecontrol_u'',''dt_addtosourcecontrol'')
'
SET @SQL = 'INSERT INTO ##TBLX ' + REPLACE(@SELECT_SQL, 'NOT_IN_LIST', @NOT_IN_LIST)
EXEC (@SQL)
SELECT @CNT = COUNT(*) FROM ##TBLX
WHILE (@CNT <> 0 )
BEGIN
SELECT @IDX = IDX, @OBJNAME = OBJNAME FROM ##TBLX WHERE IDX = @CNT
SET @EXECUTE_SQL = REPLACE(@EXECUTE_SQL , 'REPLACE_OBJNAME', @OBJNAME)
IF @EXECUTE = 1
BEGIN
EXEC (@EXECUTE_SQL)
PRINT 'OK'
END
PRINT @EXECUTE_SQL
SET @EXECUTE_SQL = REPLACE(@EXECUTE_SQL , @OBJNAME, 'REPLACE_OBJNAME')
SET @CNT = @CNT - 1
END
GO
-- master db에 권한 생성 관련 프로시져 생성해 두고
-- 모든 데이터베이스 억세스 가능하게
EXEC SP_PRIV
@SELECT_SQL = '
SELECT NAME
FROM MASTER.DBO.SYSDATABASES
WHERE NAME NOT IN (''TEMPDB'',''MASTER'',''MSDB'',''MODEL'')
ORDER BY NAME
'
, @EXECUTE_SQL = 'exec REPLACE_OBJNAME.dbo.sp_grantdbaccess ''user'''
, @EXECUTE = 1
-- db_owner 권한 주기
EXEC SP_PRIV
@SELECT_SQL = '
SELECT NAME
FROM MASTER.DBO.SYSDATABASES
WHERE NAME NOT IN (''TEMPDB'',''MASTER'',''MSDB'',''MODEL'')
ORDER BY NAME
'
, @EXECUTE_SQL = 'exec REPLACE_OBJNAME.dbo.sp_addrolemember ''db_owner'', ''user'''
, @EXECUTE = 1
데이터베이스간 제약조건 인덱스 비교검사 (0) | 2008.07.14 |
---|---|
Celko - Thinking in Sets - Auxiliary, Temporal and Virtual Tables in SQL (Elsevier, 2008) (0) | 2008.07.10 |
xp_ReadErrorLog (1) | 2008.07.08 |
MSSQL2005 최대 가용 인스턴스 수(컴퓨터당) (0) | 2008.07.07 |
Tracing and Profiling (0) | 2008.06.01 |
Using xp_ReadErrorLog in SQL Server 2005
http://www.sqlteam.com/article/using-xp_readerrorlog-in-sql-server-2005
Using xp_ReadErrorLog in SQL Server 2005
By Guest Authors on 12 May 2008 | 4 Comments | Tags: Administration
[출처] Using xp_ReadErrorLog in SQL Server 2005 (sqlmvp) |작성자 왕눈봄이
SQL2005 에러 메세지 중
This instance of SQL Server has been using a process ID of 344 since 2008-06-12 오전 10:34:43 (local) 2008-06-12 오전 1:34:43 (UTC). This is an informational message only; no user action is required.
==> 해석 : SQL Server 인스턴스가 프로세스 ID 344로 (6월 12일 10시 34분 ) 사용중...
요구된 사용자 액션이 아니다. 아하.. 근데, 왜 주기적으로 메세지 날리냐고.. 알 수가 없구나~
저 에러 로그 없애구 싶당 ㅜ.ㅜ 캬호~~
Celko - Thinking in Sets - Auxiliary, Temporal and Virtual Tables in SQL (Elsevier, 2008) (0) | 2008.07.10 |
---|---|
권한 관리^^ (0) | 2008.07.08 |
MSSQL2005 최대 가용 인스턴스 수(컴퓨터당) (0) | 2008.07.07 |
Tracing and Profiling (0) | 2008.06.01 |
T-SQL Querying (2) | 2008.04.29 |
권한 관리^^ (0) | 2008.07.08 |
---|---|
xp_ReadErrorLog (1) | 2008.07.08 |
Tracing and Profiling (0) | 2008.06.01 |
T-SQL Querying (2) | 2008.04.29 |
Query Tunning (0) | 2008.04.17 |
Tracing toolset은 170개 이벤트, 65 Column 정보를 모니터링 및 필터링 가능하다.
이번 챕터는 SQL Trace를 이용하여 약간의 공통된 문제를 풀어가는 방법에 대한 설명...
client-side trace이다.
*. internal trace components >> 다시 정리해 보자.. 무슨 말인지 모르겠다.
SQL Trace architecture의 중앙 컴포넌트는 trace controller이다. 어떤 소비자에 의해 모든 trace는 생성되고 관리되어 리소그가 관리 된다.
*. TRACE I/O providers
*. Security and Perimissions
traceing은 서버의 상태 뿐만 아니라 유저에 의한 데이타베이스로부터 결과 정보를 보내는 정보에 대한 많은 정보를 노출 시킨다. 개별적인 쿼리들의 모니터링 능력은 배치 또는 쿼리 플랜 레벨은 강력하고 꺼림직한다. 프로시져의 입력 arguments들의 많은 정보를 해커에게 노출시킬 수 있다.
이전 버젼에서는 administrator users(sysadmin)에서만 가능하다. 너무 유연하지 않다.
*. ALTER TRACE Permission
2005의 새로운 권한 중 ALTER TRACE를 불리워진다. 이것은 서버레벨 권한이다. trace를 start, stop modify a trace.. 기존의 풀 권한 보다 trace 권한을 줄 수 있는 것이면 될것 같다.
GRANT ALTER TRACE TO Jane;
예)
CREATE LOGIN JUDY WITH PASSWORD = '1136';
GO
use master
grant alter trace to judy
*. Protecting Sensitive Event Data
tracing engine은 그것 자체가 하나의 내재적으로 보안 기술을 유지한다. 요구되지 않은 눈에 대해서... access에 대한 trace를 꺼버린다. SQL Trace는 자동적으로 뺄것이다. 만일 하나의 이벤트가 패스워드와 관련된 스터오드 프로시져나 또는 구문에 대해서...
예) Create Login에 대해서는 trace off 시킨다... 진짜 안 보이네..
CREATE LOGIN JUDY WITH PASSWORD = '1136';
GO
--> 캡쳐를 뜬다.
이전버전에서는 패스워드에 대해서는 자동적으로 블랭크 처리 했다. 문자열이 sp_password를 찾아내면..
그러나 이 기능은 sql2005에 오면서 사라졌는데.. 너는 그 보호에 대한 정보를 의조하지 말아야 한다.
또 다른 새로운 기능 sql trace는 암호화되는 모듈을 가지고 있는데. sql trace는 암호화된 저장 프로시져, 유저 펑션, 뷰 에 대한 텍스트 또는 쿼리 플랜 발생정보에 대한 리턴하지 않을 것이다.
다시 말해서, 이것은 내재적으로 중요한 정보를 안전하게 만들어 줄것이다.
Getting Started: Profiler
sql server component를 이용하여 가장 빠른 트러블링 슈팅 데이타베이스 이슈를 얻어낼 수 있는 도구이다.
replay event option <-- 실습 해본다..ㅋㅋ 이것을 이용하여 어떻게 trace 뜨는지..확인해 본다...
xp_ReadErrorLog (1) | 2008.07.08 |
---|---|
MSSQL2005 최대 가용 인스턴스 수(컴퓨터당) (0) | 2008.07.07 |
T-SQL Querying (2) | 2008.04.29 |
Query Tunning (0) | 2008.04.17 |
SQL2005에서 간단한 단축키 (0) | 2008.04.17 |