'SQL Server 2005'에 해당되는 글 50건

  1. Inside Microsoft SQL 2005.TheStorage.chm
  2. output 의 사용
  3. 안정적인 데이타베이스 구축과 장애 복구 전략
  4. DSN ADD VB Script
  5. 데이터베이스간 제약조건 인덱스 비교검사
  6. Celko - Thinking in Sets - Auxiliary, Temporal and Virtual Tables in SQL (Elsevier, 2008)
  7. 권한 관리^^
  8. xp_ReadErrorLog 1
  9. MSSQL2005 최대 가용 인스턴스 수(컴퓨터당)
  10. Tracing and Profiling
아자뵤.. 중요한 자료다~ 공부하장.ㅋ

'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

output 의 사용

북스온라인 보면 잘 나오고 어딘가 질문이 있어서 하나 만들어 둡니다.

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 처리를 해주어야 합니다.

SELECT * FROM SEAT
SELECT * FROM RESERVEDSEAT
왕눈봄이(minsouk1)
7월 4일 Offline SQL Seminor

script & doc

1) mssqlsystemresource 데이터베이스 내용 확인
CREATE DATABASE [mssqlsystemresource_Copy] ON
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\                      Data\mssqlsystemresource_Copy.mdf' ),
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\                      Data\mssqlsystemresource_Copy.ldf' ) FOR ATTACH

sql db folder의 bin 디렉토리에서 내용 확인가능하다. 근디,, 시스템 테이블을 조회할 수가 없네, 어찌 해야하는 걸까? 고민좀 해봐야겟당.ㅋㅋ

2) 데이타베이스 기본 생성 폴더 지정 변경
나도 참으로 많이 고민하였다. 어떻게 변경해야 할쥐~
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'C:\Data‘
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'C:\Data‘

DSN ADD VB Script

수십대의 장비에 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



-- 양쪽 데이터베이스에

-- 제약 조건이 제대로 같은지 수량도 검사


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

Celko - Thinking in Sets - Auxiliary, Temporal and Virtual Tables in SQL (Elsevier, 2008)

요거요거~ 무슨 내용일까~ 궁금하당.ㅋㅋ
슬슬 봐야 할듯.ㅋ

'SQL Server 2005' 카테고리의 다른 글

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



 

xp_ReadErrorLog

xp_ReadErrorLog

----------------------------------------------------------------------------
위의 프로시져를 호출하면, 마지막 에러 로그 파일을 읽어들일 수 있다.

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분 ) 사용중...
요구된 사용자 액션이 아니다. 아하.. 근데, 왜 주기적으로 메세지 날리냐고.. 알 수가 없구나~
저 에러 로그 없애구 싶당 ㅜ.ㅜ 캬호~~

MS SQL2005 32 bit

가. 워크 그룹 버젼(소규모 버젼)을 제외한 모든 SQL Server 2005 버젼에 대한 독립 실행형 서버당 50개의
인스턴스 생성 가능
나. 워크 그룹 버젼은 최대 16개의 인스턴스를 지원
다. 장애조치클러스터당 25개의 인스턴스를 지원

MS SQL2005 64 bit

가. 독립 실행형 서버당 50개의 인스턴스
나. 장애조치 클러스터당 25개의 인스턴스

'SQL Server 2005' 카테고리의 다른 글

권한 관리^^  (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 and Profiling

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 뜨는지..확인해 본다...

'SQL Server 2005' 카테고리의 다른 글

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