SQL Server Express 버전 자동 백업 만들기

빌게이님의 MS에서 무료로 사용하게 해준 SQL Express버전은 몇가지 기능이 빠져있다.
Express버전에서 빠진 중요한 기능 중 하나가 SQL Agent인데
이게 없어서 주기적으로 처리해야 할 일을 못 한다면
OS의 스케쥴기능과 SqlCmd를 이용해서 처리해야한다.
(사실 내가 원하는 기능은 결국 트리거로 처리했지만......)

FILENAME : DB_BACKUP.SQL
DECLARE @DIR                     NVARCHAR(100)
DECLARE @BACKUPNAME NVARCHAR(100)
SET @DIR = N'C:\BACKUP\DB백업_' + CONVERT(NVARCHAR(20), GETDATE(), 112) + N'.BAK'
SET @BACKUPNAME = N'DB백업_' +  CONVERT(NVARCHAR(20), GETDATE(), 112) + N'.BAK'
BACKUP DATABASE [DB이름] TO DISK = @DIR WITH NOFORMAT, NOINIT, NAME = @BACKUPNAME, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO

FILENAME : SCHEDULE_DB_BACKUP.BAT
SQLCMD -S 서버이름 -i "C:\BACKUP\DB_BACKUP.SQL"
위 BATCH 파일을 윈도우 스케쥴에 등록해서 주기적으로 실행되게하면 된다.


크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2009/12/17 14:16 2009/12/17 14:16
, , ,
Response
No Trackback , No Comment
RSS :
http://shiftkey.org/rss/response/243

프로그램을 만들다보니
SP에 구조체로 값을 넘기고 싶은경우가 종종 생긴다.

보통 2가지의 경우를 사용하는데
파라메타를 데이터 갯수만큼 만들어서 보내는것과
텍스트로 만들어서 보낸 후 각 데이터별로 구분자를 기준으로 SP에서 잘라먹는 것이다.

하지만 MSSQL 2008에는 '사용자 정의 테이블 형식'이라는게 있다.

이걸 이용하면 SP에 구조체 형식으로 값을 넘길 수 있다.

사용자 정의 테이블 형식 생성 방법은 다음과 같이 TABLE 생성과 비슷하다.
CREATE TYPE [dbo].[FOO] AS TABLE(
[BAR01] [varchar](20) NOT NULL,
[BAR02] [numeric](3, 1) NOT NULL
)


SP에서는 다음과 같이 파라메타의 형식이 TABLE이 된다.
CREATE PROCEDURE UP_UPDATE_ FOO
@T_FOO [dbo].[FOO] READONLY  
AS
BEGIN
...
END

VB.NET에서 오출 방법은 SP호출과 비슷하다.
Dim DS_FOO As DataSet
Dim FOO_TABLE As DataTable = New DataTable("FOO")

Dim col As DataColumn
Dim row As DataRow

col = New DataColumn()
col.DataType = System.Type.GetType("System.String")
col.ColumnName = "BAR01"
col.ReadOnly = True
FOO_TABLE.Columns.Add(col)

col = New DataColumn()
col.DataType = System.Type.GetType("System.Decimal")
col.ColumnName = "BAR02"
col.ReadOnly = True
FOO_TABLE.Columns.Add(col)

DS_FOO = New DataSet()
DS_FOO.Tables.Add(FOO_TABLE)

Dim i As Integer
For i = 0 To 16
row = FOO_TABLE.NewRow()
row("BAR01") = STRINGDATA
row("BAR02") = NUMBERDATA
FOO_TABLE.Rows.Add(row)
Next i

Dim mCmd As New SqlCommand
mCmd.CommandType = CommandType.StoredProcedure
mCmd.CommandText = "UP_UPDATE_FOO"

mCmd.Parameters.AddWithValue("@T_FOO", FOO_TABLE)
mCmd.Parameters(0).SqlDbType = System.Data.SqlDbType.Structured

clsDB.Execute(mCmd)
mCmd.Dispose()

대충 이런 형식이다.

참고자료 : How to pass multiple records to a Stored Procedure


크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2009/10/13 10:14 2009/10/13 10:14
, ,
Response
No Trackback , No Comment
RSS :
http://shiftkey.org/rss/response/238

무슨 이유인지 모르겠지만
SQL Server 2008 Express 버전을 설치하고보니 외부접속이 막혀있었다.

외부 접속을 허용하는 방법은

'시작-모든 프로그램-Microsoft SQL Server 2008-구성 도구-SQL Server 구성 관리자'의
구성 관리자(Sql Server Configuration Manager)를 실행하면

'SQL Server 구성 관리자(로컬)->SQL Server 네트워크 구성->(인스턴트명)에 대한 프로토콜'
이라는 항목이 있다.

여기서 TCP/IP와 명명된 파이프를 사용하도록 설정하면 된다.
TCP/IP는 등록정보를 보면 IP주소 탭에 IPALL의 TCP 포트에 '1433'을 넣고 IP1의 사용도 '예'로 체크되어있는지 확인해야 한다.



크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2009/10/08 08:50 2009/10/08 08:50
, , , , ,
Response
12 Trackbacks , No Comment
RSS :
http://shiftkey.org/rss/response/234

MSSQL 에는 IIF가 없다! CASE를 쓰자.


SELECT CASE
WHEN TABLE_NO = 'A' THEN '93'
WHEN TABLE_NO = 'B' THEN '94'
END AS 'TABLE_NO'
,WORK_NO + ' ' + REPLACE(STR(RB_NO),' ', '') AS 'WORK_NO_RB_NO'
,PIECE_NO AS 'PIECE_NO'
FROM RUNTIME_ITEM
WHERE CUT_YN = 'Y'
ORDER BY TABLE_NO, ITEM_SEQ ASC


이럴땐 오라클이 그립다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2008/12/09 10:11 2008/12/09 10:11
, ,
Response
No Trackback , No Comment
RSS :
http://shiftkey.org/rss/response/186


블로그 이미지

Shiftkey가 살아가는 이런 저런 이야기......

- shiftkey

Notices

Archives

Authors

  1. shiftkey

Calendar

«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Site Stats

Total hits:
160846
Today:
121
Yesterday:
156