<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3197262865040432934</id><updated>2012-02-01T17:56:30.861-08:00</updated><title type='text'>kimyongpil</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-7258568197791168118</id><published>2012-02-01T17:55:00.000-08:00</published><updated>2012-02-01T17:56:30.873-08:00</updated><title type='text'>tempdb 초기화</title><content type='html'>backup log tempDB with no_log&lt;br /&gt;DBCC SHRINKDATABASE(N'tempdb' )&lt;br /&gt;&lt;br /&gt;다른 디렉토리로 변경&lt;br /&gt;&lt;a href="http://www.dator.co.kr/?document_srl=65617&amp;amp;tags=Database"&gt;http://www.dator.co.kr/?document_srl=65617&amp;amp;tags=Database&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-7258568197791168118?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/7258568197791168118/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2012/02/tempdb.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/7258568197791168118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/7258568197791168118'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2012/02/tempdb.html' title='tempdb 초기화'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-6451476855781243446</id><published>2011-11-09T16:18:00.001-08:00</published><updated>2011-11-09T16:18:44.745-08:00</updated><title type='text'>Oracle 쿼리 로그</title><content type='html'>select * from v_$sql where sql_text like '%table%'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-6451476855781243446?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/6451476855781243446/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2011/11/oracle.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/6451476855781243446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/6451476855781243446'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2011/11/oracle.html' title='Oracle 쿼리 로그'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-438829675300575027</id><published>2011-08-20T03:56:00.000-07:00</published><updated>2011-08-20T03:58:52.622-07:00</updated><title type='text'>TRIGGER일때 자동 증가값 조회</title><content type='html'>GO&lt;br /&gt;/****** 개체: Trigger [dbo].[tr_del] 스크립트 날짜: 08/20/2011 19:52:09 ******/&lt;br /&gt;SET ANSI_NULLS ON&lt;br /&gt;GO&lt;br /&gt;SET QUOTED_IDENTIFIER OFF&lt;br /&gt;GO&lt;br /&gt;Create &lt;span style="color:#ff0000;"&gt;TRIGGER&lt;/span&gt; [dbo].[tr_del]&lt;br /&gt;ON [dbo].[LicIssueInfo]&lt;br /&gt;FOR INSERT&lt;br /&gt;AS&lt;br /&gt;DECLARE @idx int&lt;br /&gt;DECLARE @strSql nvarchar(4000)&lt;br /&gt;DECLARE @subSql nvarchar(4000)&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#cc0000;"&gt;SELECT @idx = [idx]&lt;br /&gt;FROM inserted&lt;br /&gt;&lt;/span&gt;SET @strSql = N'CREATE TABLE [dbo].[LicIssueInfo_backup_'+ replace(convert(char(10),getdate(),120),'-','') +'] (&lt;br /&gt;[idx] [int] NOT NULL ,&lt;br /&gt;[pckidx] [int] NULL ,&lt;br /&gt;[userID] [varchar] (50) COLLATE Korean_Wansung_CI_AS NULL ,&lt;br /&gt;[userIP] [varchar] (15) COLLATE Korean_Wansung_CI_AS NULL ,&lt;br /&gt;[userMac] [varchar] (15) COLLATE Korean_Wansung_CI_AS NULL ,&lt;br /&gt;[userLoc] [char] (2) COLLATE Korean_Wansung_CI_AS NULL ,&lt;br /&gt;[issueDate] [datetime] NULL&lt;br /&gt;) ON [PRIMARY]'&lt;br /&gt;BEGIN&lt;br /&gt;if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[LicIssueInfo_backup_'+ replace(convert(char(10),getdate(),120),'-','') +']') and OBJECTPROPERTY(id, N'IsUserTable') = 1)&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;SET @subSql = N'INSERT INTO [dbo].[LicIssueInfo_backup_'+ replace(convert(char(10),getdate(),120),'-','') +'] SELECT * from LicIssueInfo WITH (NOLOCK) where idx=' + convert(char,@idx)&lt;br /&gt;EXEC sp_executesql @subSql&lt;br /&gt;delete from [dbo].[LicIssueInfo] where idx = @idx - 300000&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;ELSE&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;EXEC sp_executesql @strSql&lt;br /&gt;SET @subSql = N'INSERT INTO [dbo].[LicIssueInfo_backup_'+ replace(convert(char(10),getdate(),120),'-','') +'] SELECT * from LicIssueInfo WITH (NOLOCK) where idx=' + convert(char,@idx)&lt;br /&gt;EXEC sp_executesql @subSql&lt;br /&gt;delete from [dbo].[LicIssueInfo] where idx = @idx - 300000&lt;br /&gt;END&lt;br /&gt;END&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-438829675300575027?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/438829675300575027/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2011/08/trigger.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/438829675300575027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/438829675300575027'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2011/08/trigger.html' title='TRIGGER일때 자동 증가값 조회'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-5983942752661968501</id><published>2011-08-20T03:48:00.000-07:00</published><updated>2011-08-20T03:55:37.666-07:00</updated><title type='text'>insert 자동 증가 값 조회</title><content type='html'>DECLARE @strSql nvarchar(4000)&lt;br /&gt;DECLARE @strSql2 nvarchar(4000)&lt;br /&gt;&lt;br /&gt;SET @strSql = N'CREATE TABLE [dbo].[T_Recruit_Apply_'+ replace(@DivCode,'-','_') +'_'+ @DutyCode +'] (&lt;br /&gt;[Idx] [numeric](18, 0) IDENTITY (1, 1) NOT NULL ,&lt;br /&gt;[uid] int&lt;br /&gt;) ON [PRIMARY]'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[T_Recruit_Apply_'+ replace(@DivCode,'-','_') +'_'+ @DutyCode +']') and OBJECTPROPERTY(id, N'IsUserTable') = 1)&lt;br /&gt;---테이블이 존재하면,&lt;br /&gt;BEGIN&lt;br /&gt;---수험번호 증가&lt;br /&gt;--EXEC sp_executesql 'INSERT INTO [MBCRecruit].[dbo].[T_Recruit_Apply_'+ replace(@DivCode,'-','_') + '_' + @DutyCode + '] ([uid]) VALUES ('+ convert(varchar,@uid) + ')'&lt;br /&gt;--select @idx = @@Identity&lt;br /&gt;&lt;span style="color:#000099;"&gt;set @strSql2 = 'INSERT INTO [MBCRecruit].[dbo].[T_Recruit_Apply_'+ replace(@DivCode,'-','_') +'_'+ @DutyCode + '] ([uid]) VALUES ('+ convert(varchar,@uid) + ')'&lt;br /&gt;EXEC sp_executesql @strSql2&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;select @idx = @@Identity&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;END&lt;br /&gt;ELSE&lt;br /&gt;---테이블이 없다면,&lt;br /&gt;BEGIN&lt;br /&gt;---테이블 생성&lt;br /&gt;EXEC sp_executesql @strSql&lt;br /&gt;---수험 번호 증가&lt;br /&gt;--EXEC sp_executesql 'INSERT INTO [MBCRecruit].[dbo].[T_Recruit_Apply_'+ replace(@DivCode,'-','_') +'_'+ @DutyCode + '] ([uid]) VALUES ('+ convert(varchar,@uid) + ')'&lt;br /&gt;--select @idx = @@Identity&lt;br /&gt;set @strSql2 = 'INSERT INTO [MBCRecruit].[dbo].[T_Recruit_Apply_'+ replace(@DivCode,'-','_') +'_'+ @DutyCode + '] ([uid]) VALUES ('+ convert(varchar,@uid) + ')'&lt;br /&gt;EXEC sp_executesql @strSql2&lt;br /&gt;select @idx = 1&lt;br /&gt;END&lt;br /&gt;END&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-5983942752661968501?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/5983942752661968501/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2011/08/insert.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/5983942752661968501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/5983942752661968501'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2011/08/insert.html' title='insert 자동 증가 값 조회'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-6758236798482112325</id><published>2011-04-20T23:27:00.000-07:00</published><updated>2011-04-20T23:39:59.761-07:00</updated><title type='text'>db lock 많을때</title><content type='html'>그림과 같이 sp_lock 를 실행하세요 ..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5가지 정보를 보시면 되는데요&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;spid / db_id / object_id / mode / status&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;spid 는 할당된 프로세스 ID 이구요 ( spid가 여러개일 경우 특정 처리임계치를 넘어서 병열처리로 넘어갔다고 보면 됩니다. 이놈들이 현재 리소스를 잡아먹고 있다고 보시면 됩니다. )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;dbid 는 어떤 db로 접근했는가&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;object_id 는 어떤 객체를 건들이고 있는가 .. table ? index ? sp ??&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;mode 는 s / is / x /ix 그외에 여러가지가 있는데요&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;s는 select 처리시 발생되는 공유락 정도로 보시면 되구요 ( 100% 정확한건 아니구요 )&lt;br /&gt;&lt;br /&gt;x 는 트랜잭션 처리중 발생하는것이거나 데이터가 커져서 데이터 페이지 분할이나 확장으로 인한 객체 단위의 배타락일수 있구요 ( 100% 아니구요) 배타락의 경우 다음 프로세스가 락을 유발하는 경우 wait 상태로 빠트려서 현재 처리하는 작업이 끝날때까지 다른 작업은 계속 wait 이구요&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;상황은 여러가지와 엮기는데요 .. 암튼 ..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;가장 심플한것은 spid가 심하게 겹치는 애들을 살펴 보시면 되요&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sp_who2 79 &amp;lt;&amp;lt; 이런식으로 .. &lt;img src="http://2.bp.blogspot.com/-70CBlI0P-bI/Ta_O3JZom1I/AAAAAAAAAqc/MfOhHn4vW3s/s1600/1.jpg"&gt;&lt;br /&gt;&lt;br /&gt;kill 79&lt;br /&gt;&lt;br /&gt;상위 명령을 내리시기 전에 .. 고민해보셔야 하는게 ... select 쿼리라면 ... 사용자가 혹은 배치가 돌다가 끝나도 문제는 안되는데 ..&lt;br /&gt;&lt;br /&gt;트랜잭션일 경우 문제가 될수 있다는거죠 .. 그래서 kill 시키기 전에 어느 db 인지 어떤 객체 인지 그리고 sp_who2 를 통해서&lt;br /&gt;&lt;br /&gt;1. 어떤 웹서버에서 요청이 왔는지&lt;br /&gt;&lt;br /&gt;2. 스케줄이 돌았는지&lt;br /&gt;&lt;br /&gt;3. 미친 개발자가 있는지?&lt;br /&gt;&lt;br /&gt;대충 sp_who2 에 나오는 hostname 으로 해당 PC 나 서버를 파악하고 application 의 정보를 보고 IIS 인지 SQL 서버인지도 판단을 하구요&lt;br /&gt;&lt;br /&gt;select 쿼리 였는지 트랜잭션 인지 ... 등 정보들을 파악하고 kill 시켰을때의 영향에 대해서 보셔야 하구요 ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;대충 여기까지요 ^^;;&lt;br /&gt;&lt;br /&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 344px;" src="http://3.bp.blogspot.com/-QKyY1qkeUbY/Ta_RFQUAy2I/AAAAAAAAAq0/ttpvClRMBgk/s400/3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5597922750053272418" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-6758236798482112325?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/6758236798482112325/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2011/04/db-lock.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/6758236798482112325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/6758236798482112325'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2011/04/db-lock.html' title='db lock 많을때'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-70CBlI0P-bI/Ta_O3JZom1I/AAAAAAAAAqc/MfOhHn4vW3s/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-1851007980768577198</id><published>2011-01-12T21:29:00.001-08:00</published><updated>2011-01-12T21:29:53.229-08:00</updated><title type='text'>SQL 해당 글자의 Char ASCII값</title><content type='html'>SET TEXTSIZE 0&lt;br /&gt;-- Create variables for the character string and for the current &lt;br /&gt;-- position in the string.&lt;br /&gt;DECLARE @position int, @string char(8)&lt;br /&gt;-- Initialize the current position and the string variables.&lt;br /&gt;SET @position = 1&lt;br /&gt;SET @string = 'New Moon'&lt;br /&gt;WHILE @position &lt;= DATALENGTH(@string)&lt;br /&gt;   BEGIN&lt;br /&gt;   SELECT ASCII(SUBSTRING(@string, @position, 1)), &lt;br /&gt;      CHAR(ASCII(SUBSTRING(@string, @position, 1)))&lt;br /&gt;   SET @position = @position + 1&lt;br /&gt;   END&lt;br /&gt;GO&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-1851007980768577198?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/1851007980768577198/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2011/01/sql-char-ascii.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/1851007980768577198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/1851007980768577198'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2011/01/sql-char-ascii.html' title='SQL 해당 글자의 Char ASCII값'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-3745685015218761921</id><published>2011-01-04T00:52:00.000-08:00</published><updated>2011-01-04T00:53:11.164-08:00</updated><title type='text'>DB 이름 변경</title><content type='html'>데이타베이스 명령어인 renamedb를 사용하여 변경&lt;br /&gt;alter database ADAM set single_user with rollback immediate&lt;br /&gt;EXEC sp_renamedb 'ADAM', 'ADAM_20110104_old' &lt;br /&gt;alter database ADAM_20110104_old set multi_user with rollback immediate&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-3745685015218761921?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/3745685015218761921/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2011/01/db.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/3745685015218761921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/3745685015218761921'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2011/01/db.html' title='DB 이름 변경'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-246903389354417397</id><published>2010-12-28T21:34:00.001-08:00</published><updated>2010-12-28T21:34:55.438-08:00</updated><title type='text'>i-on CMS에서 Replace 관련</title><content type='html'>[[--RecordStart,content--]]NULL[[--ArtFieldValue,adf_bcont01--]][[--IfStart,Exist:adf_bcont02--]][[--ThenStart--]][[--ArtFieldValue,adf_bcont02--]][[--ThenEnd--]][[--IfEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--IfStart,is:content&gt;NULL--]][[--ThenStart--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&lt;(/)?([a-zA-Z]*)(\\s[a-zA-Z\\200-\\377]*=[^&gt;]*)?(\\s)*(/)?&gt;),To:--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;quot;),To:"--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;quot;),To:"--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#35;),To:#--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#36;),To:\$--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#37;),To:%--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#38;),To:&amp;--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#39;),To:'--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#40;),To:(--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#41;),To:)--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#42;),To:*--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#43;),To:+--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#44;),To:\,--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#45;),To:---]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#46;),To:.--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#47;),To:/--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#58;),To::--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#59;),To:;--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#60;),To:&lt;--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#61;),To:=--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#62;),To:&gt;--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#63;),To:?--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#64;),To:@--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#91;),To:[--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#92;),To:\\--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#93;),To:]--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#94;),To:^--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#95;),To:_--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#96;),To:'--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#123;),To:{--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#124;),To:|--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#125;),To:}--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;#126;),To:~--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&amp;nbsp;),To:#SPACE#--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--SubStringStart,4~--]][[--Write,content--]][[--SubStringEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--RecordStart,content--]][[--ReplaceStart,Regex:(&lt;br /&gt;),To:--]][[--Write,content--]][[--ReplaceEnd--]][[--RecordEnd--]]&lt;br /&gt;[[--SubStringStart,length:~[%word%]--]][[--ReplaceStart,regex:&lt;br&gt;,to:--]][[--Write,content--]][[--ReplaceEnd--]][[--SubStringEnd--]]...&lt;br /&gt;[[--ThenEnd--]]&lt;br /&gt;[[--ElseStart--]][[--ArtText,filter:text,Length:[%word%]--]][[--ElseEnd--]][[--IfEnd--]]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-246903389354417397?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/246903389354417397/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/12/i-on-cms-replace.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/246903389354417397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/246903389354417397'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/12/i-on-cms-replace.html' title='i-on CMS에서 Replace 관련'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-3105174155372036910</id><published>2010-12-23T03:57:00.001-08:00</published><updated>2010-12-23T03:57:46.096-08:00</updated><title type='text'>로그 줄이기</title><content type='html'>0. 로그 백업&lt;br /&gt;&lt;br /&gt;declare @path varchar(1000)&lt;br /&gt;set @path= 'E:\DBBackup\iCashDB_' + replace(convert(varchar(10),getdate(),121),'-','') + '.trn'&lt;br /&gt;BACKUP LOG iCashDB TO DISK = @path&lt;br /&gt;&lt;br /&gt;1. 로그 파일 크기 확인&lt;br /&gt;&lt;br /&gt;DBCC SQLPERF(LOGSPACE)&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;2. 로그 데이터 지우기&lt;br /&gt;&lt;br /&gt;BACKUP LOG DataBaseName WITH NO_LOG&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;3. 로그 파일 크기 줄이기&lt;br /&gt;&lt;br /&gt;DBCC SHRINKFILE(DataBaseName_LOG, 1)&lt;br /&gt;&lt;br /&gt;(1 : 1MB 크기로 줄임)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-3105174155372036910?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/3105174155372036910/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/12/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/3105174155372036910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/3105174155372036910'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/12/blog-post.html' title='로그 줄이기'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-2097908270061626978</id><published>2010-12-19T16:44:00.001-08:00</published><updated>2010-12-19T16:44:26.751-08:00</updated><title type='text'>SP 수정 날짜, 생성 날짜 조회</title><content type='html'>SELECT name , create_date,modify_date   FROM sys.objects &lt;br /&gt;WHERE type = 'P' and &lt;br /&gt;name in(&lt;br /&gt;'www@USP_ProgramContentList_ByProgramCode',&lt;br /&gt;'www@USP_ProgramContentListDetail_ByProgramCode'&lt;br /&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-2097908270061626978?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/2097908270061626978/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/12/sp.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/2097908270061626978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/2097908270061626978'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/12/sp.html' title='SP 수정 날짜, 생성 날짜 조회'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-4283608541463159753</id><published>2010-10-16T01:05:00.001-07:00</published><updated>2010-10-16T01:06:03.503-07:00</updated><title type='text'>로그 백업 Query</title><content type='html'>DECLARE CurQuery CURSOR  &lt;br /&gt;FOR&lt;br /&gt;&lt;br /&gt; select name from dbo.sysdatabases &lt;br /&gt; where name not in ('master', 'msdb', 'model', 'pubs', 'tempdb', 'Northwind') and &lt;br /&gt;  convert(sysname,DatabasePropertyEx(name,'Status')) ='ONLINE' and&lt;br /&gt;  convert(sysname,DatabasePropertyEx(name,'Updateability')) &lt;&gt;'READ_ONLY' and&lt;br /&gt;  convert(sysname,DatabasePropertyEx(name,'Recovery')) &lt;&gt;'SIMPLE'&lt;br /&gt; DECLARE @name varchar(100)&lt;br /&gt; &lt;br /&gt; OPEN CurQuery&lt;br /&gt;&lt;br /&gt;  FETCH NEXT FROM   CurQuery INTO @name&lt;br /&gt;   &lt;br /&gt;  WHILE @@FETCH_STATUS = 0&lt;br /&gt;  BEGIN&lt;br /&gt;   declare @dir  nvarchar(200) &lt;br /&gt;   set @dir = N'e:\DBBackUP\' + @name+ '\' + @name + '_' + + convert(nvarchar(20), getDate(), 112)  + replace(substring(convert(nvarchar(20), getDate(), 114), 1,5),':','') + '.lg'&lt;br /&gt;&lt;br /&gt;   backup log @name to DISK = @dir&lt;br /&gt;   exec [USP_RestoreQuery] @dir ,@name &lt;br /&gt;&lt;br /&gt;   PRINT @dir&lt;br /&gt; &lt;br /&gt;   FETCH NEXT&lt;br /&gt;   FROM   CurQuery&lt;br /&gt;   INTO @name&lt;br /&gt;&lt;br /&gt;  END --end of while&lt;br /&gt;&lt;br /&gt; CLOSE  CurQuery&lt;br /&gt;&lt;br /&gt;DEALLOCATE CurQuery&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-4283608541463159753?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/4283608541463159753/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/10/query_4431.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/4283608541463159753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/4283608541463159753'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/10/query_4431.html' title='로그 백업 Query'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-7247152489593420684</id><published>2010-10-16T01:04:00.001-07:00</published><updated>2010-10-16T06:22:26.121-07:00</updated><title type='text'>증분 백업 Query</title><content type='html'>CREATE TABLE #Tmp( &lt;br /&gt;Query VARCHAR(4000) &lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DECLARE CurQuery CURSOR &lt;br /&gt;FOR&lt;br /&gt;&lt;br /&gt;select name from dbo.sysdatabases &lt;br /&gt;where name not in ('master', 'msdb', 'model', 'pubs', 'tempdb', 'Northwind') and &lt;br /&gt;convert(sysname,DatabasePropertyEx(name,'Status')) ='ONLINE' and&lt;br /&gt;convert(sysname,DatabasePropertyEx(name,'Updateability')) &lt;&gt;'READ_ONLY' and&lt;br /&gt;convert(sysname,DatabasePropertyEx(name,'Recovery')) &lt;&gt;'SIMPLE'&lt;br /&gt;DECLARE @name varchar(100)&lt;br /&gt;&lt;br /&gt;DECLARE @ndir1 varchar(1000)&lt;br /&gt;DECLARE @ndir2 varchar(1000)&lt;br /&gt;set @ndir1= convert(nvarchar(20), getDate(), 112)&lt;br /&gt;set @ndir2= replace(substring(convert(nvarchar(20), getDate(), 114), 1,5),':','') &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OPEN CurQuery&lt;br /&gt;&lt;br /&gt;FETCH NEXT FROM CurQuery INTO @name&lt;br /&gt;&lt;br /&gt;WHILE @@FETCH_STATUS = 0&lt;br /&gt;BEGIN&lt;br /&gt;declare @dir nvarchar(200) &lt;br /&gt;set @dir = N'D:\DBBackUP\' + @name+ '\' + @name + '_' + + @ndir1 +@ndir2+ '.dif'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;backup database @name to DISK = @dir with differential&lt;br /&gt;exec [USP_RestoreQuery] @dir ,@name &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;INSERT INTO #Tmp&lt;br /&gt;(Query)&lt;br /&gt;VALUES&lt;br /&gt;( ' [USP_RestoreQuery] ' + '''' + @dir + '''' + ',' + '''' + @name + '''' )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PRINT @dir&lt;br /&gt;&lt;br /&gt;FETCH NEXT&lt;br /&gt;FROM CurQuery&lt;br /&gt;INTO @name&lt;br /&gt;&lt;br /&gt;END --end of while&lt;br /&gt;&lt;br /&gt;CLOSE CurQuery&lt;br /&gt;&lt;br /&gt;DEALLOCATE CurQuery &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DECLARE CurQuery2 CURSOR &lt;br /&gt;FOR&lt;br /&gt;select Query from #Tmp&lt;br /&gt;DECLARE @Q nvarchar(4000)&lt;br /&gt;&lt;br /&gt;OPEN CurQuery2&lt;br /&gt;&lt;br /&gt;FETCH NEXT FROM CurQuery2 INTO @Q&lt;br /&gt;&lt;br /&gt;WHILE @@FETCH_STATUS = 0&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;--PRINT @Q&lt;br /&gt;EXEC sp_executesql @Q&lt;br /&gt;print ' '&lt;br /&gt;print ' '&lt;br /&gt;print ' '&lt;br /&gt;&lt;br /&gt;FETCH NEXT&lt;br /&gt;FROM CurQuery2&lt;br /&gt;INTO @Q&lt;br /&gt;&lt;br /&gt;END --end of while&lt;br /&gt;&lt;br /&gt;CLOSE CurQuery2&lt;br /&gt;&lt;br /&gt;DEALLOCATE CurQuery2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TRUNCATE TABLE #Tmp&lt;br /&gt;drop table #Tmp&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-7247152489593420684?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/7247152489593420684/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/10/d.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/7247152489593420684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/7247152489593420684'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/10/d.html' title='증분 백업 Query'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-2099799744903358707</id><published>2010-10-16T01:01:00.000-07:00</published><updated>2010-10-16T05:32:35.686-07:00</updated><title type='text'>풀 백업 Query</title><content type='html'>CREATE TABLE #Tmp( &lt;br /&gt;Query VARCHAR(4000) &lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DECLARE CurQuery CURSOR  &lt;br /&gt;FOR&lt;br /&gt;&lt;br /&gt; select name from dbo.sysdatabases&lt;br /&gt; where name not in ('master', 'msdb', 'model', 'pubs', 'tempdb', 'Northwind') and &lt;br /&gt;  convert(sysname,DatabasePropertyEx(name,'Status')) ='ONLINE' and&lt;br /&gt;  convert(sysname,DatabasePropertyEx(name,'Updateability')) &lt;&gt;'READ_ONLY' and&lt;br /&gt;  convert(sysname,DatabasePropertyEx(name,'Recovery')) &lt;&gt;'SIMPLE'&lt;br /&gt;&lt;br /&gt; DECLARE @name varchar(100)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; DECLARE @ndir1  varchar(1000)&lt;br /&gt; DECLARE @ndir2  varchar(1000)&lt;br /&gt; set @ndir1=  convert(nvarchar(20), getDate(), 112)&lt;br /&gt; set @ndir2=   replace(substring(convert(nvarchar(20), getDate(), 114), 1,5),':','') &lt;br /&gt;&lt;br /&gt; OPEN CurQuery&lt;br /&gt;&lt;br /&gt;  FETCH NEXT FROM   CurQuery INTO @name&lt;br /&gt;   &lt;br /&gt;  WHILE @@FETCH_STATUS = 0&lt;br /&gt;  BEGIN&lt;br /&gt;   declare @dir  nvarchar(200) &lt;br /&gt;   set @dir = N'D:\DBBackUP\' + @name+ '\' + @name + '_' + + @ndir1 +@ndir2+ '.dmp'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   backup database @name to DISK = @dir&lt;br /&gt;   --exec [USP_RestoreQuery] @dir ,@name &lt;br /&gt;   &lt;br /&gt;   --PRINT 'exec [USP_RestoreQuery] ' + '''' +  @dir  + '''' + ',' + '''' +  @name  + '''' &lt;br /&gt;&lt;br /&gt;   INSERT INTO #Tmp&lt;br /&gt;              (Query)&lt;br /&gt;        VALUES&lt;br /&gt;              ( ' [USP_RestoreQuery] ' + '''' +  @dir  + '''' + ',' + '''' +  @name  + '''' )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;   FETCH NEXT&lt;br /&gt;   FROM   CurQuery&lt;br /&gt;   INTO @name&lt;br /&gt;&lt;br /&gt;  END --end of while&lt;br /&gt;&lt;br /&gt; CLOSE  CurQuery&lt;br /&gt;&lt;br /&gt;DEALLOCATE CurQuery&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DECLARE CurQuery2 CURSOR  &lt;br /&gt;FOR&lt;br /&gt;select Query from #Tmp&lt;br /&gt; DECLARE @Q nvarchar(4000)&lt;br /&gt;&lt;br /&gt; OPEN CurQuery2&lt;br /&gt;&lt;br /&gt;  FETCH NEXT FROM   CurQuery2 INTO @Q&lt;br /&gt;   &lt;br /&gt;  WHILE @@FETCH_STATUS = 0&lt;br /&gt;  BEGIN&lt;br /&gt;&lt;br /&gt;  --PRINT @Q&lt;br /&gt;  EXEC sp_executesql  @Q&lt;br /&gt;  print ' '&lt;br /&gt;  print ' '&lt;br /&gt;  print ' '&lt;br /&gt;&lt;br /&gt;   FETCH NEXT&lt;br /&gt;   FROM   CurQuery2&lt;br /&gt;   INTO @Q&lt;br /&gt;&lt;br /&gt;  END --end of while&lt;br /&gt;&lt;br /&gt; CLOSE  CurQuery2&lt;br /&gt;&lt;br /&gt;DEALLOCATE CurQuery2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TRUNCATE TABLE #Tmp&lt;br /&gt;drop table #Tmp&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-2099799744903358707?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/2099799744903358707/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/10/query_16.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/2099799744903358707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/2099799744903358707'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/10/query_16.html' title='풀 백업 Query'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-880378180783062765</id><published>2010-10-16T00:24:00.000-07:00</published><updated>2010-10-16T05:34:29.794-07:00</updated><title type='text'>백업 파일 자동 복원 Query 생성</title><content type='html'>SET QUOTED_IDENTIFIER ON &lt;br /&gt;GO&lt;br /&gt;SET ANSI_NULLS ON &lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--[USP_RestoreQuery] 'E:\db 백업\완료121.254.134.170\DBBACKUP\TvianImnews\TvianImnews_201010142359.dmp' ,'MyPageDb' &lt;br /&gt;&lt;br /&gt;ALTER      PROCEDURE [USP_RestoreQuery] &lt;br /&gt;@path varchar(1000), &lt;br /&gt;@dbname varchar(1000)&lt;br /&gt;AS&lt;br /&gt;SET NOCOUNT ON &lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;--declare @path varchar(1000)&lt;br /&gt;--declare @dbname varchar(1000)&lt;br /&gt;declare @Query varchar(1000)&lt;br /&gt;&lt;br /&gt;--set @path = 'E:\db 백업\211.233.27.90\dbbackup\MyPageDb\MyPageDb_201010142335.dmp'&lt;br /&gt;--set @path = 'E:\db 백업\완료121.254.134.170\DBBACKUP\TvianImnews\TvianImnews_1.dif'&lt;br /&gt;--set @dbname = 'MyPageDb'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CREATE TABLE #dbfiles( &lt;br /&gt;LogicalName NVARCHAR(128) &lt;br /&gt;,PhysicalName NVARCHAR(260) &lt;br /&gt;,Type CHAR(1) &lt;br /&gt;,FileGroupName NVARCHAR(128) &lt;br /&gt;,Size numeric(20,0) &lt;br /&gt;,MaxSize numeric(20,0) /*&lt;br /&gt;&lt;br /&gt;,FileId INT &lt;br /&gt;,CreateLSN numeric(25,0) &lt;br /&gt;,DropLSN numeric(25,0) &lt;br /&gt;,UniqueId uniqueidentifier &lt;br /&gt;,ReadOnlyLSN numeric(25,0) &lt;br /&gt;,ReadWriteLSN numeric(25,0) &lt;br /&gt;,BackupSizeInBytes INT &lt;br /&gt;,SourceBlockSize INT &lt;br /&gt;,FilegroupId INT &lt;br /&gt;,LogGroupGUID uniqueidentifier &lt;br /&gt;,DifferentialBaseLSN numeric(25) &lt;br /&gt;,DifferentialBaseGUID uniqueidentifier &lt;br /&gt;,IsReadOnly INT &lt;br /&gt;,IsPresent INT */&lt;br /&gt;) &lt;br /&gt;set @Query = 'Restore FileListOnly from Disk =''' + @path + ''''&lt;br /&gt;INSERT #dbfiles &lt;br /&gt;EXEC(@Query)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DECLARE CurQuery CURSOR &lt;br /&gt;FOR&lt;br /&gt;&lt;br /&gt;SELECT LogicalName, PhysicalName --, Type&lt;br /&gt;FROM #dbfiles &lt;br /&gt;--select ';' as LogiclName,'fdsf' as physicalName&lt;br /&gt;&lt;br /&gt;DECLARE @LogiclName varchar(1000)&lt;br /&gt;DECLARE @physicalName varchar(1000)&lt;br /&gt;&lt;br /&gt;OPEN CurQuery&lt;br /&gt;&lt;br /&gt;FETCH NEXT FROM CurQuery INTO @LogiclName,@physicalName&lt;br /&gt;&lt;br /&gt;if right(@path,3) &lt;&gt;'dif'&lt;br /&gt;BEGIN&lt;br /&gt;print 'RESTORE DATABASE '+ @dbname +' FROM '&lt;br /&gt;print 'DISK = ''' + @path +''' WITH '&lt;br /&gt;END &lt;br /&gt;WHILE @@FETCH_STATUS = 0&lt;br /&gt;BEGIN&lt;br /&gt;if right(@path,3) &lt;&gt;'dif'&lt;br /&gt;BEGIN &lt;br /&gt;PRINT 'MOVE ''' + @LogiclName + '''' + ' To '''+ @physicalName +''','&lt;br /&gt;&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FETCH NEXT&lt;br /&gt;FROM CurQuery&lt;br /&gt;INTO @LogiclName,@physicalName&lt;br /&gt;&lt;br /&gt;END --end of while&lt;br /&gt;&lt;br /&gt;CLOSE CurQuery&lt;br /&gt;&lt;br /&gt;DEALLOCATE CurQuery&lt;br /&gt;if right(@path,3) &lt;&gt;'dif'&lt;br /&gt;BEGIN&lt;br /&gt;PRINT 'FILE =1, noRECOVERY , REPLACE'&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;if right(@path,3) ='dif'&lt;br /&gt;BEGIN&lt;br /&gt;PRINT 'RESTORE DATABASE '+ @dbname +' FROM DISK = '''+ @physicalName +''' WITH RECOVERY'&lt;br /&gt;PRINT 'alter database '+ @dbname +' set multi_user with rollback immediate'&lt;br /&gt;End&lt;br /&gt;&lt;br /&gt;print ' '&lt;br /&gt;print ' '&lt;br /&gt;print ' '&lt;br /&gt;print ' '&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TRUNCATE TABLE #dbfiles &lt;br /&gt;drop table #dbfiles &lt;br /&gt;&lt;br /&gt;END &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;GO&lt;br /&gt;SET QUOTED_IDENTIFIER OFF &lt;br /&gt;GO&lt;br /&gt;SET ANSI_NULLS ON &lt;br /&gt;GO&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-880378180783062765?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/880378180783062765/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/10/query.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/880378180783062765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/880378180783062765'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/10/query.html' title='백업 파일 자동 복원 Query 생성'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-5532393732218523644</id><published>2010-10-15T19:40:00.000-07:00</published><updated>2010-10-15T19:41:18.405-07:00</updated><title type='text'>SQL 정보 관련 조회</title><content type='html'>버전을 확인하는 방법&lt;br /&gt;&lt;br /&gt;SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SELECT @@VERSION&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/321185/ko"&gt;http://support.microsoft.com/kb/321185/ko&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-5532393732218523644?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/5532393732218523644/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/10/sql.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/5532393732218523644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/5532393732218523644'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/10/sql.html' title='SQL 정보 관련 조회'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-9174553463098214216</id><published>2010-07-27T17:59:00.003-07:00</published><updated>2010-07-27T17:59:49.242-07:00</updated><title type='text'>DB 접근 Host session 의 용도 분류</title><content type='html'>select count(lastwaittype),lastwaittype  from master.dbo.sysprocesses where hostname='MYWEB102' group by lastwaittypeorder by lastwaittypeuse article_count&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-9174553463098214216?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/9174553463098214216/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/07/db-host-session_27.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/9174553463098214216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/9174553463098214216'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/07/db-host-session_27.html' title='DB 접근 Host session 의 용도 분류'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-436942882098028743</id><published>2010-07-27T17:59:00.001-07:00</published><updated>2010-07-27T17:59:18.571-07:00</updated><title type='text'>DB 접근 Host session 수(DB 계정별)</title><content type='html'>select  hostname,program_name,loginame, count(hostname) from  master.dbo.sysprocesses where hostname&lt;&gt;''group by hostname,program_name,loginameorder by count(hostname) desc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-436942882098028743?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/436942882098028743/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/07/db-host-session-db.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/436942882098028743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/436942882098028743'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/07/db-host-session-db.html' title='DB 접근 Host session 수(DB 계정별)'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-2915728430314185224</id><published>2010-07-27T17:57:00.000-07:00</published><updated>2010-07-27T17:58:51.651-07:00</updated><title type='text'>DB 접근 Host session 수</title><content type='html'>select hostname,program_name,count(hostname) from  master.dbo.sysprocesses where hostname&lt;&gt;''group by hostname,program_name order by count(hostname) desc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-2915728430314185224?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/2915728430314185224/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/07/db-host-session.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/2915728430314185224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/2915728430314185224'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/07/db-host-session.html' title='DB 접근 Host session 수'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-1563396882775331111</id><published>2010-07-12T21:37:00.003-07:00</published><updated>2010-07-12T21:37:38.338-07:00</updated><title type='text'>링크드 서버 연결 쿼리</title><content type='html'>sp_addlinkedserver N'리스트 서버 별명', ' ', N'SQLOLEDB', N'연결서버 아이피'&lt;br /&gt;go&lt;br /&gt;sp_addlinkedsrvlogin N' 리스트 서버 별명', false, N'연결서버 계정', N'연결서버 계정', N'연결 서버 페스워드'&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;select top 1 * from  링크드별명.DB명.dbo또는계정.테이블명&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-1563396882775331111?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/1563396882775331111/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/07/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/1563396882775331111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/1563396882775331111'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/07/blog-post.html' title='링크드 서버 연결 쿼리'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-1948264133914269696</id><published>2010-07-12T21:37:00.001-07:00</published><updated>2010-07-12T21:37:19.018-07:00</updated><title type='text'>Linked Server 저장프로시져 Job 호출시 에러 발생</title><content type='html'>Linked Server 저장프로시져 Job 호출시 에러 발생&lt;br /&gt;&lt;br /&gt;[작업 환경]&lt;br /&gt;Windows 2000 Advanced Server&lt;br /&gt;SQL Server 2000 Standard Edition (Linked Server 구성)&lt;br /&gt;&lt;br /&gt;[세부사항]&lt;br /&gt;Linked Server로 구성된 2-System(A &amp;amp; B)에서 A System에 작업(Job) 스캐쥴을 생성 상대(B-system)에 DATA를 분석하여&lt;br /&gt;본 서버에 DataBase를 업데이트&lt;br /&gt;해당 작업 실행시&lt;br /&gt;==================================================================================&lt;br /&gt;SQL Server Scheduled Job 'aaa' (0x27C5AB0F8FAF0247BA561A9762700AEA) - Status: 실패 - Invoked on: 2005-12-01 15:09:01 - Message: 작업이 실패했습니다.  작업이 사용자 sa에 의해 호출되었습니다. 실행할 마지막 단계는 단계 1(ddd)입니다.&lt;br /&gt;==================================================================================&lt;br /&gt;이벤트 에러 발생&lt;br /&gt;&lt;br /&gt;[문제 발생 원인]&lt;br /&gt;상기 오류 구문만을 분석해 보면 구성된 Job을 실행함에 있어 관련 계정이 충분한 권한을 가지지 못한 것에서 발생한 메시지로&lt;br /&gt;Job Scheduling은 SQLSERVERAGENT 서비스의 인증을 통해 타 시스템에 해당 쿼리를 실행하게 됨으로 두 시스템간의 인증문제로 유추.&lt;br /&gt;최초에는 RPC 상속 문제라고 추측 관련 Stored Procedure를 수정하여 Linked 서버 Data를 가져오는 쿼리 부분을 B System에 작성하여 A System에서&lt;br /&gt;OPENQUERY로 실행하려 했으나 Job 오류 기록을 세부적으로 살펴본 결과 SQLAgent Service의 계정 권한 문제로 판단 .&lt;br /&gt;SQL 2000 서버에서 작업(Job)을 수행하기 위해서는, system admin role에 SQL Agent 계정이 포함되어 있어야 하나 고객님께 문의 결과 SQLAgent가&lt;br /&gt;“Local System Account"로 수행되고 있으므로 해당 권한이 없었습니다.&lt;br /&gt;Winodws 2000 계열에서 Local System Account는 System-Level의 서비스를 구동하기 위한 것으로 사용자 응용프로그램(여기서는 SQL의 Job Service)를&lt;br /&gt;구동하는데에는 적절하지 않은 계정입니다.&lt;br /&gt;&lt;br /&gt;[조치 사항]&lt;br /&gt;SQLSERVERAGENT Service의 계정을 Local System =&gt; Administrator 계정으로 변경&lt;br /&gt;서비스 재시작 후 작업 정상적으로 구동&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CF)&lt;br /&gt;1. SQLSERVERAGENT Service 가 Administrator 로 서비스 시작&lt;br /&gt;2. 링크드 계정에 Administrator 계정 추가 될 것&lt;br /&gt;3. Job 계정이 sa 로 될 것&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-1948264133914269696?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/1948264133914269696/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/07/linked-server-job.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/1948264133914269696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/1948264133914269696'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/07/linked-server-job.html' title='Linked Server 저장프로시져 Job 호출시 에러 발생'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-4939432522639560624</id><published>2010-06-09T22:05:00.000-07:00</published><updated>2010-06-09T22:09:20.932-07:00</updated><title type='text'>.NET 다운로드</title><content type='html'>&lt;!-- FileFetch.aspx의 DataGrid 정의 부분 -- &gt;&lt;br /&gt;&lt;asp:HyperLinkColumn DataNavigateUrlField="Name"              DataNavigateUrlFormatString="FileFetch.aspx?FileName={0}"&lt;br /&gt;     DataTextField="Name"     HeaderText="File Name:"    &lt;br /&gt;SortExpression!="Name" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;다운로드 가능한 파일의 최대 크기를 결정하는 한 가지 요인은 서버의 하드웨어 구성 및 런타임 상태입니다. 이 문제를 해결하려면 기술 자료 문서 "FIX: Downloading Large Files Causes a Large Memory Loss and Causes the Aspnet_wp.exe Process to Recycle"(&lt;a href="http://support.microsoft.com/kb/823409" target="_blank"&gt;support.microsoft.com/kb/823409&lt;/a&gt;)을 참조하십시오&lt;br /&gt;&lt;br /&gt;이 코드를 최대 1.6GB 크기의 파일로 테스트한 결과 다운로드가 빠르게 수행되었으며 서버 메모리도 대량으로 사용되지 않았습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;출처&lt;br /&gt;&lt;a href="http://blog.daum.net/sobakcc/8436163"&gt;http://blog.daum.net/sobakcc/8436163&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-4939432522639560624?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/4939432522639560624/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/06/net.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/4939432522639560624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/4939432522639560624'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/06/net.html' title='.NET 다운로드'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-269921614509058312</id><published>2010-05-16T18:54:00.000-07:00</published><updated>2010-05-16T19:00:46.721-07:00</updated><title type='text'>페이스북의 트위터 따라하기 : Open Stream API</title><content type='html'>트위터의 기세에 밀려 인터페이스 자체를 트위터스럽게 개편한 페이스북(Facebook)이 트위터를 따라한 새로운 서비스를 선보였다. 트위터의 경우 API가 개방되어 이를 이용한 다양한 써드파티 어플리케이션이 만들어져 있고, 트위터의 공식 웹사이트의 방문자 수가 전체 방문자의 30%가 조금 넘는 수준이다. 그만큼 트위터 외부에서 트위터 API를 이용한 어플리케이션을 이용하는 사람들의 수가 많다는 것이고.. 이 또한 트위터의 성장세를 견인하는 동력이 되고 있는 것이다. 이번에 페이스북은 트위터와 마찬가지로.. 페이스북을 방문하지 않고 외부 어플리케이션에서 글을 쓰거나, 댓글을 달거나, 추천도 할 수 있는 새로운 API인 Facebook Open Stream API를 발표했다. 이번에 발표된 새로운 API는 요즘 새롭게 떠오르고 있는 활동흐름(Activity Stream) 표준을 따르고 있다고 하는데.. 베타 테스트를 외부 파트너와 진행하면서 Seesmic Desktop에 시범 적용되어 있는 상태이다. 아직 공개되지 않아 다운로드받을 수는 없는 상태인데.. 아래 동영상을 참고하시기 바란다&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/DkqKc52EsS4&amp;color1=0xb1b1b1&amp;color2=0xd0d0d0&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/DkqKc52EsS4&amp;color1=0xb1b1b1&amp;color2=0xd0d0d0&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;또한 페이스북은 Open Stream API를 활용한 데스크톱 어플리케이션의 샘플을 직접 제작해서 공개했다. (다운로드받아서 직접 설치해 보시기 바란다) 아래는 AIR로 제작된 것으로 PC에 설치해서 페이스북에 글을 올리거나, 댓글을 다는 등의 활동을 할 수 있는데.. 아직 한글 지원이 원활하지 못한 상태로 보인다. (한글로 입력하면 업로드가 안되는 문제 발생..)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;페이스북의 경우 이미 페이스북 커넥트(Facebook Connect)를 통해 외부에서 자신의 상태를 업데이트할 수 있는 기능을 제공해 왔는데.. 자신의 상태에 달린 댓글을 확인하거나.. 댓글을 다는 기능은 제공하지 않았다. 또한 사진이나 비디오는 아예 나오지 않았는데.. 이번에 선보인 Open Stream API의 경우 페이스북 내에서의 활동 내역을 모두 가져올 수 있게 된 것이다. 지난 번에 소개했던 트위트덱(TweetDeck)의 경우 페이스북 커넥트를 이용해서 내 친구들의 상태 정보만 볼 수 있었는데.. 새로운 API를 적용하면 아주 편리해질 듯 하다.&lt;br /&gt;&lt;br /&gt;아니 트윗덱뿐 아니라 페이스북 내의 활동 내역이 필요한 곳이라면.. 이제 아무라도 Open Stream API를 이용해서 페이스북의 정보를 이용할 수 있게 되었다. 트위터와 페이스북의 상태 정보를 통합적으로 관리할 수 있는 어플리케이션을 만든다면 나름 인기 있을 듯 하다. 자신의 서비스에 필요하셨던 분들은 꼭 살펴보시기 바란다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;출처 : http://mushman.co.kr/2691048&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-269921614509058312?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/269921614509058312/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/05/open-stream-api.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/269921614509058312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/269921614509058312'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/05/open-stream-api.html' title='페이스북의 트위터 따라하기 : Open Stream API'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-6288576595205948160</id><published>2010-05-16T18:51:00.000-07:00</published><updated>2010-05-16T18:53:24.974-07:00</updated><title type='text'>Open Graph를 이용 지역뉴스를 소셜화한 Fwix</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_GNqgS-rOx8w/S_ChVT8TD5I/AAAAAAAAAqE/GTk6HRb_HV0/s1600/fwix.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 286px;" src="http://3.bp.blogspot.com/_GNqgS-rOx8w/S_ChVT8TD5I/AAAAAAAAAqE/GTk6HRb_HV0/s320/fwix.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5472050934757658514" /&gt;&lt;/a&gt;&lt;br /&gt;Categorized | social, web&lt;br /&gt;Facebook의 Open Graph를 이용 지역뉴스를 소셜화한 “Fwix”&lt;br /&gt;Posted on 30 4월 2010. Tags: Facebook, Fwix, Open Graph, 위치정보&lt;br /&gt;&lt;br /&gt;출처 :http://211.232.128.126/2010/04/30/facebook%EC%9D%98-open-graph%EB%A5%BC-%EC%9D%B4%EC%9A%A9-%EC%A7%80%EC%97%AD%EB%89%B4%EC%8A%A4%EB%A5%BC-%EC%86%8C%EC%85%9C%ED%99%94%ED%95%9C-fwix/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fwix는, 위치정보기반 지역 리얼타임 뉴스 스트림을 제공하는 새로운 사이트로,이번에 Facebook의 Open Graph API를 사용해 컨텐츠의 소셜화를 도모한다.이 API에 대해서는 Facebook이 그것을 발표했을 때에 본지에서도 재빨리 알렸지만, 사람들의 흥미나”likes”(Like 버튼을 클릭하는 것)에 근거하는 소셜적인 연결고리와 퍼스널라이제이션 층을, Web의 어떤 페이지에도 추가하는 것이 그 목적이다.&lt;br /&gt;&lt;br /&gt;Fwix의 유저는, 이 사이트의 어떤 컨텐츠도 like 할 수 있고, 그 정보…장소, 화제, Facebook의 프렌드등…에 근거해 자신의 뉴스 피드를 커스터마이즈 할 수 있다.또, 같은 화제에 관심을 가지고 있는 다른 사람과 연결될 수 있다.자신의 생각과 닮은 다른 사람의 흥미나 코멘트도, 뉴즈피드에 포함되어 뉴스에 관련된 소셜대화, 화제의 제안등도 표시되므로, 목적으로서는, 리얼타임 지역뉴스의 에코시스템이 만들어져 간다.&lt;br /&gt;&lt;br /&gt;Fwix는, 각각의 지역에 관련한 뉴스 기사나 블로그 기사를 모은다(현재는 미국과 캐나다의 80여 도시가 대상).그 때문에 Fwix의 팀은, 각 도시에 관계가 있다고 생각되는 뉴스 소스나 블로그를 선택해,알고리즘에 의해서 자동적으로 관련 컨텐츠를 판단한다.최근에는 그 알고리즘을 약간 개선해서, 각지역의“근방”의 뉴스등도 가져올 수 있게 되었다.거기서 Fwix의 컨텐츠는, 화제와 부근지역의 양자의 관계를 표시한다.예를 들어, 샌프란시스코의 Mission 지구에서 일어난 강도 사건의 기사를 읽게 되면, Mission의 근처지역에서 일어난 범죄 등에 관한 기사를 찾아낼 수 있다.&lt;br /&gt;&lt;br /&gt;Fwix도 지금까지는 Facebook Connect를 제공하고 있었지만, 새로운 소셜기능 쪽이 Facebook과 더 깊게, 의미가 있는 통합화를 표현할 수 있다라고.설립자 Darian Shirazi는 그렇게 말한다.Fwix는 최근 The New York Times와 제휴했다. 그리고 iPad용 어플리케이션도 출시해서 현재 앱스토어에서 15위를 달리고 있다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-6288576595205948160?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/6288576595205948160/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/05/open-graph-fwix.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/6288576595205948160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/6288576595205948160'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/05/open-graph-fwix.html' title='Open Graph를 이용 지역뉴스를 소셜화한 Fwix'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_GNqgS-rOx8w/S_ChVT8TD5I/AAAAAAAAAqE/GTk6HRb_HV0/s72-c/fwix.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-2139335917349831221</id><published>2010-04-08T01:12:00.000-07:00</published><updated>2010-04-08T01:42:45.106-07:00</updated><title type='text'>C# Loop</title><content type='html'>html 내용&lt;br /&gt;&lt;br /&gt;&amp;lt;asp:Repeater ID="listRepeater" runat="server" OnItemDataBound="listRepeater_ItemDataBound"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;&amp;lt;asp:Label ID="newsID" runat="server"&amp;gt;&lt;br /&gt;&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;&amp;lt;/ItemTemplate&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/asp:Repeater&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CS 내용&lt;br /&gt;Page_Load 함수에 &lt;br /&gt;&lt;br /&gt;  if (!IsPostBack)&lt;br /&gt;        {&lt;br /&gt;       요기에 작성&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;요기에 들어가는 것 &lt;br /&gt;ElectNewsData data = new ElectNewsData();&lt;br /&gt;IMBC.FW.DB.ListDataView ldv = data.RetrieveElectNewsList(pageRow, curPage, search, searchWord, true);&lt;br /&gt;totalRecord = ldv.TotalCount;&lt;br /&gt;string pagingURL = "RetrieveElectNewsList.aspx?curPage={0}&amp;search=" + search + "&amp;searchWord=" + HttpUtility.UrlEncode(searchWord);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//WebUtil.SetNavigator 함수를 통해 페이징 리스트 노출&lt;br /&gt;&lt;br /&gt;//listRepeater_ItemDataBound 함수를 통해 이벤트 Looop화 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    protected void listRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        Label newsID = (Label)e.Item.FindControl("newsID");&lt;br /&gt;        newsID.Text = DataBinder.Eval(e.Item.DataItem, "NewsID").ToString();&lt;br /&gt;     &lt;br /&gt;    }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-2139335917349831221?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/2139335917349831221/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/04/c-loop.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/2139335917349831221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/2139335917349831221'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/04/c-loop.html' title='C# Loop'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-4859983474937067730</id><published>2010-03-03T19:53:00.001-08:00</published><updated>2010-03-03T19:54:52.481-08:00</updated><title type='text'>SQL Com호출</title><content type='html'>VB 방식&lt;br /&gt;&lt;br /&gt;Set Jmail = New SMTPMail&lt;br /&gt;Jmail.ServerAddress = "&lt;&lt;address&gt;&gt;"&lt;br /&gt;Jmail.Sender = "&lt;&lt;your&gt;&gt;"&lt;br /&gt;Jmail.ReplyTo = "&lt;&lt;your&gt;&gt;"&lt;br /&gt;Jmail.AddRecipientEx "&lt;&lt;recipient&gt;&gt;", "&lt;&gt;"&lt;br /&gt;Jmail.Subject = "Testing the excellent jmail"&lt;br /&gt;Jmail.Priority = 1&lt;br /&gt;Jmail.Body = "Body and soul." &amp;amp; vbCrLf &amp;amp; "Way cool..."&lt;br /&gt;Jmail.AddAttachment "c:\windows\desktop\test.doc"&lt;br /&gt;Jmail.Execute&lt;br /&gt;Set Jmail = Nothing&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQL 방식&lt;br /&gt;exec @hr = sp_OACreate 'jmail.smtpmail', @object OUT&lt;br /&gt;exec @hr = sp_OASetProperty @object, 'Sender', @sender&lt;br /&gt;exec @hr = sp_OASetProperty @object, 'ServerAddress', @serveraddress&lt;br /&gt;exec @hr = sp_OAMethod @object, 'AddRecipient', NULL , @recipient&lt;br /&gt;exec @hr = sp_OASetProperty @object, 'Subject', @subject&lt;br /&gt;exec @hr = sp_OASetProperty @object, 'Body', @mailbody&lt;br /&gt;exec @hr = sp_OAMethod @object, 'execute', NULL&lt;br /&gt;&lt;br /&gt;exec @hr = sp_OAGetErrorInfo @object, @source OUT, @description OUT&lt;br /&gt;&lt;br /&gt;if @hr = 0&lt;br /&gt;begin&lt;br /&gt;    select @output = '  Source: ' + @source&lt;br /&gt;    print @output&lt;br /&gt;    select @output = '  Description: ' + @description&lt;br /&gt;    print @output&lt;br /&gt;end&lt;br /&gt;else&lt;br /&gt;begin&lt;br /&gt;    print '  sp_OAGetErrorInfo failed.'&lt;br /&gt;    return&lt;br /&gt;end&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-4859983474937067730?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/4859983474937067730/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/03/sql-com.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/4859983474937067730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/4859983474937067730'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/03/sql-com.html' title='SQL Com호출'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-5138809088401288250</id><published>2010-02-23T20:17:00.000-08:00</published><updated>2010-02-23T20:26:22.046-08:00</updated><title type='text'>HTML5 video 테그 Ogg 샘플</title><content type='html'>&lt;a href="http://double.co.nz/video_test/test2.html"&gt;http://double.co.nz/video_test/test2.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ogg 샘플 재생&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-5138809088401288250?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/5138809088401288250/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/02/html5-video-ogg.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/5138809088401288250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/5138809088401288250'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/02/html5-video-ogg.html' title='HTML5 video 테그 Ogg 샘플'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-8925785133784004080</id><published>2010-02-23T20:13:00.000-08:00</published><updated>2010-02-23T20:14:43.191-08:00</updated><title type='text'>HTML5 video 테그</title><content type='html'>&lt;p&gt;현재 브라우져가 HTML5 &lt;video&gt;태그를 지원한다라면, DOM 객체는 &lt;video&gt;태그를 만들고 canPlayType() 함수를 가지고 있을 것이다.지원하지 않는다라면 &lt;video&gt;태그를 생성하여, 모든 태그에서 쓰이는 일반적인 속성으로 설정할 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;function supports_video() { &lt;/p&gt;&lt;p&gt; return !!document.createElement('video').canPlayType;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;기능을 직접 작성하는 대신에 Modernizr로 &lt;video&gt; 태그를 지원받을 수 있다.&lt;br /&gt;if (Modernizr.video) &lt;/p&gt;&lt;p&gt;{  // let's play some video!&lt;/p&gt;&lt;p&gt;} else {&lt;/p&gt;&lt;p&gt;  // no native video support available :(  &lt;/p&gt;&lt;p&gt;// maybe check for QuickTime® or Flash® instead&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;다음으로는 현재 브라우져에서 실행되어 질 수 있는 &lt;/p&gt;&lt;p&gt;video format을 찾는 테스트를 해볼려고 한다.&lt;br /&gt;출처 : &lt;a href="http://diveintohtml5.org/detect.html"&gt;http://diveintohtml5.org/detect.html&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-8925785133784004080?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/8925785133784004080/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/02/html5-video.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/8925785133784004080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/8925785133784004080'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/02/html5-video.html' title='HTML5 video 테그'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-2337716891110332893</id><published>2010-02-21T22:28:00.000-08:00</published><updated>2010-02-21T22:38:26.721-08:00</updated><title type='text'>IP조회 관련 설계</title><content type='html'>&lt;div style="WIDTH: 380px; HEIGHT: 3836px"&gt;&lt;br /&gt;본 포스트에는 C나 &lt;span class="Apple-style-span" style="COLOR: rgb(51,51,51); LINE-HEIGHT: normal; WHITE-SPACE: prefont-family:돋움;" &gt;MySQL에서 사용되고 있는 INET_ATON()함수와 ATON_INET()함수를 MS SQL Server에서 구현해 보도록 하겠다.&lt;/span&gt; &lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(51,51,51); LINE-HEIGHT: normal; WHITE-SPACE: prefont-family:돋움;" &gt;이에 앞서 먼저 INET_ATON()함수와 ATON_INET()함수에 대해 간략하게 설명하도록 하겠다. &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(51,51,51); LINE-HEIGHT: normal; WHITE-SPACE: prefont-family:돋움;" &gt;이 함수들은 원래 특정 IP Address에 매핑되는 지역정보를 출력하기 위해 유래되었다. &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(51,51,51); LINE-HEIGHT: normal; WHITE-SPACE: prefont-family:돋움;" &gt;예를 들어 '192.15.10.125는 미국이다' 혹은 '192.15.10.125는 미국의 Broomfield다' 라는 지역정보를 조회하기 위해서...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(51,51,51); LINE-HEIGHT: normal; WHITE-SPACE: prefont-family:돋움;" &gt;이를 구현하기 위해서는 먼저 아래와 같이 특정 IP 대역과 지역정보가 대응되는 Database가 필요하다.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(70,70,70); LINE-HEIGHT: 16px; WHITE-SPACE: normal; BORDER-COLLAPSE: collapse"&gt;&lt;table style="TEXT-ALIGN: left" bordercolor="white" cellspacing="0" cellpadding="2" width="700" bordercolorlight="#999999" border="1" unselectable="on"&gt;&lt;tbody&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;th style="FONT-SIZE: 12px; FONT-FAMILY: 돋움"&gt;대역의 시작 IP&lt;/th&gt;&lt;th style="FONT-SIZE: 12px; FONT-FAMILY: 돋움"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;대역의 마지막 IP&lt;/p&gt;&lt;/th&gt;&lt;th style="FONT-SIZE: 12px; FONT-FAMILY: 돋움"&gt;나라&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style="font-family:돋움;font-size:12px;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;192.168.0.1&lt;/p&gt;&lt;/td&gt;&lt;td   style="font-family:돋움;font-size:12px;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;192.168.10.23&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td   style="font-family:돋움;font-size:12px;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;KR&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style="font-family:돋움;font-size:12px;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;192.168.10.24&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td   style="font-family:돋움;font-size:12px;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;192.168.101.255&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td   style="font-family:돋움;font-size:12px;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;US&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td   style="font-family:돋움;font-size:12px;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 18px; webkit-border-horizontal-spacing: 5px; webkit-border-vertical-spacing: 5pxfont-family:돋움체;" &gt;192.168.102.1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td size="12px" face="돋움"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 18px; webkit-border-horizontal-spacing: 5px; webkit-border-vertical-spacing: 5pxfont-family:돋움체;" &gt;192.168.102.10&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="FONT-SIZE: 12px; FONT-FAMILY: 돋움"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;CN&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(51,51,51); LINE-HEIGHT: normal; WHITE-SPACE: prefont-family:돋움;" &gt;하지만 아시다시피 IPV4는 3옥텟으로 구분되어 있기 때문에 이를 그대로 Database화 시키면 아래와 같이 엉뚱한 정보를 조회하는 &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(51,51,51); LINE-HEIGHT: normal; WHITE-SPACE: prefont-family:돋움;" &gt;결과를 낳게 된다. &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(70,70,70); LINE-HEIGHT: 16px; WHITE-SPACE: normal; BORDER-COLLAPSE: collapse"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;table style="TEXT-ALIGN: left" cellspacing="5" cellpadding="2" width="700" bgcolor="#cccccc" bordercolorlight="#999999" border="0" unselectable="on"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="FONT-SIZE: 12px; FONT-FAMILY: 돋움" valign="top" width="800"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;-- 테스트 테이블 작성&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;CREATE TABLE ipcountry (&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;    startip VARCHAR(15)&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;   ,endip   VARCHAR(15)&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;   ,country VARCHAR(2)&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;);&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;GO&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;-- 테스트 데이터 입력&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;INSERT INTO ipcountry VALUES ('192.168.0.1', '192.168.10.23', 'KR' );&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;INSERT INTO ipcountry VALUES ('192.168.10.24', '192.168.101.255', 'US' );&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;INSERT INTO ipcountry VALUES ('192.168.102.1', '192.168.102.10', 'CN' );&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;GO&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;SELECT *&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;  FROM ipcountry&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:굴림체;"&gt;startip         endip           country&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:굴림체;"&gt;--------------- --------------- -------&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:굴림체;"&gt;192.168.0.1     192.168.10.23   KR&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:굴림체;"&gt;192.168.10.24   192.168.101.255 US&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:굴림체;"&gt;192.168.102.1   192.168.102.10  CN&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:굴림체;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;-- 데이터 조회&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;SELECT *&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;  FROM ipcountry&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt; WHERE '192.168.102.5' BETWEEN startip AND endip&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;GO&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;--&amp;gt; 출력 결과&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:굴림체;"&gt;startip         endip           country&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:굴림체;"&gt;--------------- --------------- -------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;이를 해결하기 위해 어떤 똑똑한(?) 사람이 3옥텟으로 구분되어 있는 IP Adress를 다음과 같은 계산식으로 주소를 변환하여 &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;Database화를 시켜 범위 검색이 가능하게 하였다. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;192.15.10.125 를 변환할 경우&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(70,70,70); LINE-HEIGHT: 16px; WHITE-SPACE: normal; BORDER-COLLAPSE: collapse"&gt;&lt;table style="TEXT-ALIGN: left" bordercolor="white" cellspacing="0" cellpadding="2" width="700" bordercolorlight="#999999" border="1" unselectable="on"&gt;&lt;tbody&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;th style="FONT-SIZE: 12px; LINE-HEIGHT: 1.5; FONT-FAMILY: 돋움"&gt;Segment(s)&lt;/th&gt;&lt;th style="FONT-SIZE: 12px; LINE-HEIGHT: 1.5; FONT-FAMILY: 돋움"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;Weight(w)&lt;/p&gt;&lt;/th&gt;&lt;th&gt;s * Power(256, w)&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="LINE-HEIGHT: 1.5;font-family:돋움;font-size:12px;"  &gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;192&lt;/p&gt;&lt;/td&gt;&lt;td style="LINE-HEIGHT: 1.5;font-family:돋움;font-size:12px;"  &gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="LINE-HEIGHT: 1.5;font-family:돋움;font-size:12px;"  &gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;3221225472&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="LINE-HEIGHT: 1.5;font-family:돋움;font-size:12px;"  &gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;15&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="LINE-HEIGHT: 1.5;font-family:돋움;font-size:12px;"  &gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="LINE-HEIGHT: 1.5;font-family:돋움;font-size:12px;"  &gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;983040&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td style="LINE-HEIGHT: 1.5;font-family:돋움;font-size:12px;"  &gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;10&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="LINE-HEIGHT: 1.5;font-family:돋움;font-size:12px;"  &gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="LINE-HEIGHT: 1.5;font-family:돋움;font-size:12px;"  &gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;2560&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td style="LINE-HEIGHT: 1.5;font-family:돋움;font-size:12px;"  &gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;125&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="LINE-HEIGHT: 1.5;font-family:돋움;font-size:12px;"  &gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;0&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="LINE-HEIGHT: 1.5;font-family:돋움;font-size:12px;"  &gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;125&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td style="LINE-HEIGHT: 1.5;font-family:돋움;font-size:12px;"  &gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="LINE-HEIGHT: 1.5" size="12px" face="돋움"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;&lt;span class="Apple-style-span"  style="color:#ff0000;"&gt;&lt;b&gt;I&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#ff0000;"&gt;&lt;b&gt;P Number&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="FONT-SIZE: 12px; LINE-HEIGHT: 1.5; FONT-FAMILY: 돋움"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px"&gt;&lt;span class="Apple-style-span"  style="color:#ff0000;"&gt;&lt;b&gt;3222211197&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 16px; WHITE-SPACE: normal"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;이 공식을 이용하여 다시 테이블을 작성하면 아래와 같다.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(0,0,0); LINE-HEIGHT: 18px; WHITE-SPACE: normal; webkit-border-horizontal-spacing: 5px; webkit-border-vertical-spacing: 5px"&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(70,70,70); LINE-HEIGHT: 16px; WHITE-SPACE: normal; BORDER-COLLAPSE: collapse"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;table style="TEXT-ALIGN: left" cellspacing="5" cellpadding="2" width="700" bgcolor="#cccccc" bordercolorlight="#999999" border="0" unselectable="on"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="FONT-SIZE: 12px; LINE-HEIGHT: 1.5; FONT-FAMILY: 돋움" valign="top" width="800"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;-- 테스트 테이블 작성&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;CREATE TABLE ipcountry2 (&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    startip VARCHAR(15)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;   ,endip   VARCHAR(15)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;   ,startipnum BIGINT&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;   ,endipnum   BIGINT&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;   ,country VARCHAR(2)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;);&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;GO&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;-- 테스트 데이터 입력&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;INSERT INTO ipcountry2 VALUES ('192.168.0.1', '192.168.10.23', 3232235521, 3232238103, 'KR' );&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;INSERT INTO ipcountry2 VALUES ('192.168.10.24', '192.168.101.255', 3232238104, 3232261631, 'US' );&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;INSERT INTO ipcountry2 VALUES ('192.168.102.1', '192.168.102.10' , 3232261633, 3232261642, 'CN');&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;GO&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:굴림체;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:굴림체;"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="font-family:굴림체;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;SELECT *&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;  FROM ipcountry2&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;startip         endip           startipnum           endipnum             country&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;--------------- --------------- -------------------- -------------------- -------&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;192.168.0.1     192.168.10.23   3232235521           3232238103           KR&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;192.168.10.24   192.168.101.255 3232238104           3232261631           US&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;192.168.102.1   192.168.102.10  3232261633           3232261642           CN&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;-- 데이터 조회&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;SELECT *&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;  FROM ipcountry2&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt; WHERE &lt;span class="Apple-style-span"  style="font-family:돋움;"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;3232261637&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt; BETWEEN startipnum AND endipnum -- &lt;span class="Apple-style-span"  style="font-family:돋움;"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;3232261637&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt; = '192.168.102.5'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;--&amp;gt; 출력 결과&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:굴림체;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="font-family:굴림체;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;startip         endip           startipnum           endipnum             country&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;--------------- --------------- -------------------- -------------------- -------&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;192.168.102.1   192.168.102.10  3232261633           3232261642           CN&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;하지만, 이렇게 사용하기 위해서는 매번 특정 IP 주소에 대응하는 숫자형 주소로 바꾸어 계산해야 하는 불편함이 있다.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;그래서 사용되는 것이 NET_ATON()함수와 ATON_INET()함수이며, 이를 MS SQL Server에서 구현하기 위해 &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;다음과 같은 함수를 만들어 보았다.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(70,70,70); LINE-HEIGHT: 16px; WHITE-SPACE: normal; BORDER-COLLAPSE: collapse"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;strong&gt;1. 숫자형 IP주소를 IP Address로 변환하는 함수 작성하기&lt;/strong&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;table style="TEXT-ALIGN: left" cellspacing="5" cellpadding="2" width="700" bgcolor="#cccccc" bordercolorlight="#999999" border="0" unselectable="on"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="FONT-SIZE: 12px; FONT-FAMILY: 돋움" valign="top" width="800"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;CREATE FUNCTION dbo.Func_ConvertNum2Ip(@ip BIGINT)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-tab-span" style="WHITE-SPACE: pre"&gt;&lt;/span&gt;RETURNS VARCHAR(15)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;AS&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;BEGIN&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    DECLARE @delimiter VARCHAR(1)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;          , @SUBNET_MASK INT&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;          , @idx INT&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;          , @ipSeg BIGINT&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;          , @segments VARCHAR(15)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    SET @delimiter = '.'&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    SET @SUBNET_MASK = 256&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    SET @idx = 1&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    SET @ipSeg = 0&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    SET @segments = ''&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    WHILE (@idx &amp;lt;= 4)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    BEGIN&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;        SET @ipSeg = CAST(@ip / POWER(@SUBNET_MASK,4-@idx) AS BIGINT)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;        SET @ip=@ip - CAST(@ipSeg * POWER(@SUBNET_MASK,4-@idx) AS BIGINT)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;        IF (@idx = 1)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;            SET @segments = CAST(@ipSeg AS VARCHAR)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;        ELSE&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;            SET @segments = @segments + @delimiter + CAST(@ipSeg AS VARCHAR)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;            SET @idx = @idx +1&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    END&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    RETURN  @segments&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;END&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;GO&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;strong&gt;2. IP Address를 숫자형 IP주소로 변환하는 함수 작성하기&lt;/strong&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;table style="TEXT-ALIGN: left" cellspacing="5" cellpadding="2" width="700" bgcolor="#cccccc" bordercolorlight="#999999" border="0" unselectable="on"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="FONT-SIZE: 12px; LINE-HEIGHT: 1.5; FONT-FAMILY: 돋움" valign="top" width="800"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;CREATE FUNCTION dbo.Func_ConvertIp2Num(@ip NVARCHAR(15))&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-tab-span" style="WHITE-SPACE: pre"&gt;&lt;/span&gt;RETURNS BIGINT&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;AS&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;BEGIN&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    DECLARE @delimiter NVARCHAR(1)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;          , @SUBNET_MASK INT&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;          , @idx INT&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;          , @ipNum FLOAT&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;          , @textXML XML&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    DECLARE @segments TABLE(id INT ,col INT)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    SET @delimiter = '.'&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    SET @SUBNET_MASK = 256&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    SET @idx = 4&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    SET @ipNum = 0&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    SELECT    @textXML = CAST('&amp;lt;col&amp;gt;' + REPLACE(@ip, @delimiter, '&amp;lt;/col&amp;gt;&amp;lt;col&amp;gt;') + '&amp;lt;/col&amp;gt;' AS XML);&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    INSERT INTO @segments(id, col)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;        SELECT ROW_NUMBER () OVER (ORDER BY col) AS id&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;             , T.col.value('.', 'int') AS col&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;          FROM @textXML.nodes('/col') T(col)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;         ORDER BY id DESC&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    SELECT @ipNum = @ipNum + (CAST((col % @SUBNET_MASK) AS FLOAT) * POWER(@SUBNET_MASK,@idx-id))&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;      FROM @segments&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;    RETURN CAST(@ipNum AS BIGINT)&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;END&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;GO&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;자 이제, 먼저 테스트에 사용한 질의문을 아래와 같이 수정한 다음 조회을 하면 성공적으로 결과를 얻을 수 있음을 확인할 수 있다.&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;단, 당연한 이야기이겠지만 대량의 데이터를 조회하기 위해서는 최적의 인덱스 설계가 필요하다.&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;table style="TEXT-ALIGN: left" cellspacing="5" cellpadding="2" width="700" bgcolor="#cccccc" bordercolorlight="#999999" border="0" unselectable="on"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="FONT-SIZE: 12px; FONT-FAMILY: 돋움" valign="top" width="800"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: 18px"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;-- 데이터 조회&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;SELECT *&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;  FROM ipcountry2&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt; WHERE dbo.Func_ConvertIp2Num('192.168.102.5') BETWEEN startipnum AND endipnum&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:돋움체;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span style="font-family:돋움체;"&gt;--&amp;gt; 출력 결과&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:굴림체;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="font-family:굴림체;"&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;startip         endip           startipnum           endipnum             country&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;--------------- --------------- -------------------- -------------------- -------&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-TOP: 0px"&gt;192.168.102.1   192.168.102.10  3232261633           3232261642           CN&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="font-family:돋움;color:#333333;"&gt;&lt;span class="Apple-style-span" style="LINE-HEIGHT: normal; WHITE-SPACE: pre"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;IP 갱신 데이터&lt;br /&gt;&lt;a href="http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip" target="_blank"&gt;http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;출처&lt;br /&gt;&lt;a href="http://blog.naver.com/PostView.nhn?blogId=wing3a07&amp;amp;logNo=100074163457&amp;amp;widgetTypeCall=true"&gt;http://blog.naver.com/PostView.nhn?blogId=wing3a07&amp;amp;logNo=100074163457&amp;amp;widgetTypeCall=true&lt;/a&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-2337716891110332893?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/2337716891110332893/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/02/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/2337716891110332893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/2337716891110332893'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/02/blog-post.html' title='IP조회 관련 설계'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-233428902572227732</id><published>2010-02-21T22:21:00.001-08:00</published><updated>2010-02-21T22:21:16.099-08:00</updated><title type='text'>DB 오프라인</title><content type='html'>ALTER DATABASE RefereData SET OFFLINE&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-233428902572227732?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/233428902572227732/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/02/db.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/233428902572227732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/233428902572227732'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/02/db.html' title='DB 오프라인'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-394607649990119685</id><published>2010-01-19T17:54:00.001-08:00</published><updated>2010-01-19T17:54:23.208-08:00</updated><title type='text'>SQL 버전 확인</title><content type='html'>SELECT 'SQL Server '+ CAST(SERVERPROPERTY('productversion') AS VARCHAR) + ' - '+ CAST(SERVERPROPERTY('productlevel') AS VARCHAR) + ' ('+ CAST(SERVERPROPERTY('edition') AS VARCHAR) + ')'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-394607649990119685?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/394607649990119685/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2010/01/sql.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/394607649990119685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/394607649990119685'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2010/01/sql.html' title='SQL 버전 확인'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-2784687979154396531</id><published>2009-11-26T00:13:00.001-08:00</published><updated>2009-11-26T00:16:27.710-08:00</updated><title type='text'>MS-SQL DB 백업 스케줄</title><content type='html'>:: 백업 스크립트&lt;br /&gt;1. 풀백업 (일주일에 한번 일요일 오전 2시 이후)&lt;br /&gt;DECLARE CurQuery CURSOR FOR&lt;br /&gt;select name from dbo.sysdatabases where name not in ('master', 'msdb', 'model', 'pubs', 'tempdb', 'Northwind') and convert(sysname,DatabasePropertyEx(name,'Status')) ='ONLINE' and convert(sysname,DatabasePropertyEx(name,'Updateability')) &lt;&gt;'READ_ONLY' and convert(sysname,DatabasePropertyEx(name,'Recovery')) &lt;&gt;'SIMPLE'&lt;br /&gt;DECLARE @name varchar(100) OPEN CurQuery&lt;br /&gt;FETCH NEXT FROM CurQuery INTO @name WHILE @@FETCH_STATUS = 0 BEGIN declare @dir nvarchar(200) set @dir = N'D:\DBBackUP\' + @name+ '\' + @name + '_' + + convert&lt;br /&gt;(nvarchar(20), getDate(), 112) + replace(substring(convert(nvarchar(20), getDate(), 114),&lt;br /&gt;1,5),':','') + '.dmp' backup database @name to DISK = @dir PRINT @dir FETCH NEXT FROM CurQuery INTO @name&lt;br /&gt;END --end of while&lt;br /&gt;CLOSE CurQuery&lt;br /&gt;DEALLOCATE CurQuery&lt;br /&gt;&lt;br /&gt;2. 차등백업 (하루에 한번 오전 2시 이후)&lt;br /&gt;DECLARE CurQuery CURSOR FOR&lt;br /&gt;select name from dbo.sysdatabases where name not in ('master', 'msdb', 'model', 'pubs', 'tempdb', 'Northwind') and convert(sysname,DatabasePropertyEx(name,'Status')) ='ONLINE' and convert(sysname,DatabasePropertyEx(name,'Updateability')) &lt;&gt;'READ_ONLY' and convert(sysname,DatabasePropertyEx(name,'Recovery')) &lt;&gt;'SIMPLE'&lt;br /&gt;DECLARE @name varchar(100) OPEN CurQuery&lt;br /&gt;FETCH NEXT FROM CurQuery INTO @name WHILE @@FETCH_STATUS = 0 BEGIN declare @dir nvarchar(200) set @dir = N'D:\DBBackUP\' + @name+ '\' + @name + '_' + + convert&lt;br /&gt;(nvarchar(20), getDate(), 112) + replace(substring(convert(nvarchar(20), getDate(), 114),&lt;br /&gt;1,5),':','') + '.dif'&lt;br /&gt;backup database @name to DISK = @dir with differential PRINT @dir FETCH NEXT FROM CurQuery INTO @name&lt;br /&gt;END --end of while&lt;br /&gt;CLOSE CurQuery&lt;br /&gt;DEALLOCATE CurQuery&lt;br /&gt;&lt;br /&gt;3. 로그백업 (한시간에 한번) (sp_helpDB로 DB recovery가 simple이 아닐 경우 )&lt;br /&gt;DECLARE CurQuery CURSOR FOR&lt;br /&gt;select name from dbo.sysdatabases where name not in ('master', 'msdb', 'model', 'pubs', 'tempdb', 'Northwind') and convert(sysname,DatabasePropertyEx(name,'Status')) ='ONLINE' and convert(sysname,DatabasePropertyEx(name,'Updateability')) &lt;&gt;'READ_ONLY' and convert(sysname,DatabasePropertyEx(name,'Recovery')) &lt;&gt;'SIMPLE' DECLARE @name varchar(100) OPEN CurQuery&lt;br /&gt;FETCH NEXT FROM CurQuery INTO @name WHILE @@FETCH_STATUS = 0 BEGIN declare @dir nvarchar(200) set @dir = N'D:\DBBackUP\' + @name+ '\' + @name + '_' + + convert&lt;br /&gt;(nvarchar(20), getDate(), 112) + replace(substring(convert(nvarchar(20), getDate(), 114),&lt;br /&gt;1,5),':','') + '.lg'&lt;br /&gt;backup log @name to DISK = @dir PRINT @dir FETCH NEXT FROM CurQuery INTO @name&lt;br /&gt;END --end of while&lt;br /&gt;CLOSE CurQuery&lt;br /&gt;DEALLOCATE CurQuery&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-2784687979154396531?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/2784687979154396531/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/blog-post_26.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/2784687979154396531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/2784687979154396531'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/blog-post_26.html' title='MS-SQL DB 백업 스케줄'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-4918081731448369921</id><published>2009-11-25T23:49:00.000-08:00</published><updated>2009-11-25T23:50:34.600-08:00</updated><title type='text'>SQL Server 2000에서 SQL Server 2005로 로그인 및 암호를 전송하는 경우</title><content type='html'>SQL Server 7.0에서 SQL Server 2005로 로그인 및 암호를 전송하는 경우&lt;br /&gt;SQL Server 2000에서 SQL Server 2005로 로그인 및 암호를 전송하는 경우&lt;br /&gt;역할에 로그인을 할당하는 경우서로 다른 버전의 SQL Server 간에 로그인 및 암호를 전송한 다음 역할에 로그인을 할당하려면 다음과 같이 하십시오.&lt;br /&gt;원본 SQL Server에서 다음 스크립트를 실행합니다.&lt;br /&gt;USE master&lt;br /&gt;GO&lt;br /&gt;IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL&lt;br /&gt;DROP PROCEDURE sp_hexadecimal&lt;br /&gt;GO&lt;br /&gt;CREATE PROCEDURE sp_hexadecimal&lt;br /&gt;@binvalue varbinary(256),&lt;br /&gt;@hexvalue varchar(256) OUTPUT&lt;br /&gt;AS&lt;br /&gt;DECLARE @charvalue varchar(256)&lt;br /&gt;DECLARE @i int&lt;br /&gt;DECLARE @length int&lt;br /&gt;DECLARE @hexstring char(16)&lt;br /&gt;SELECT @charvalue = '0x'&lt;br /&gt;SELECT @i = 1&lt;br /&gt;SELECT @length = DATALENGTH (@binvalue)&lt;br /&gt;SELECT @hexstring = '0123456789ABCDEF'&lt;br /&gt;WHILE (@i &lt;= @length)&lt;br /&gt;BEGIN&lt;br /&gt;DECLARE @tempint int&lt;br /&gt;DECLARE @firstint int&lt;br /&gt;DECLARE @secondint int&lt;br /&gt;SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))&lt;br /&gt;SELECT @firstint = FLOOR(@tempint/16)&lt;br /&gt;SELECT @secondint = @tempint - (@firstint*16)&lt;br /&gt;SELECT @charvalue = @charvalue +&lt;br /&gt;SUBSTRING(@hexstring, @firstint+1, 1) +&lt;br /&gt;SUBSTRING(@hexstring, @secondint+1, 1)&lt;br /&gt;SELECT @i = @i + 1&lt;br /&gt;END&lt;br /&gt;SELECT @hexvalue = @charvalue&lt;br /&gt;GO&lt;br /&gt;IF OBJECT_ID ('sp_help_revlogin_2000_to_2005') IS NOT NULL&lt;br /&gt;DROP PROCEDURE sp_help_revlogin_2000_to_2005&lt;br /&gt;GO&lt;br /&gt;CREATE PROCEDURE sp_help_revlogin_2000_to_2005&lt;br /&gt;@login_name sysname = NULL,&lt;br /&gt;@include_db bit = 0,&lt;br /&gt;@include_role bit = 0&lt;br /&gt;AS&lt;br /&gt;DECLARE @name sysname&lt;br /&gt;DECLARE @xstatus int&lt;br /&gt;DECLARE @binpwd varbinary (256)&lt;br /&gt;DECLARE @dfltdb varchar (256)&lt;br /&gt;DECLARE @txtpwd sysname&lt;br /&gt;DECLARE @tmpstr varchar (256)&lt;br /&gt;DECLARE @SID_varbinary varbinary(85)&lt;br /&gt;DECLARE @SID_string varchar(256)&lt;br /&gt;IF (@login_name IS NULL)&lt;br /&gt;DECLARE login_curs CURSOR STATIC FOR&lt;br /&gt;SELECT sid, [name], xstatus, password, isnull(db_name(dbid), 'master')&lt;br /&gt;FROM master.dbo.sysxlogins&lt;br /&gt;WHERE srvid IS NULL AND&lt;br /&gt;[name] &lt;&gt; 'sa'&lt;br /&gt;ELSE&lt;br /&gt;DECLARE login_curs CURSOR FOR&lt;br /&gt;SELECT sid, [name], xstatus, password, isnull(db_name(dbid), 'master')&lt;br /&gt;FROM master.dbo.sysxlogins&lt;br /&gt;WHERE srvid IS NULL AND&lt;br /&gt;[name] = @login_name&lt;br /&gt;OPEN login_curs&lt;br /&gt;FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb&lt;br /&gt;IF (@@fetch_status = -1)&lt;br /&gt;BEGIN&lt;br /&gt;PRINT 'No login(s) found.'&lt;br /&gt;CLOSE login_curs&lt;br /&gt;DEALLOCATE login_curs&lt;br /&gt;RETURN -1&lt;br /&gt;END&lt;br /&gt;SET @tmpstr = '/* sp_help_revlogin script '&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;SET @tmpstr = '** Generated '&lt;br /&gt;+ CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;PRINT ''&lt;br /&gt;PRINT ''&lt;br /&gt;PRINT ''&lt;br /&gt;PRINT '/***** CREATE LOGINS *****/'&lt;br /&gt;WHILE @@fetch_status = 0&lt;br /&gt;BEGIN&lt;br /&gt;PRINT ''&lt;br /&gt;SET @tmpstr = '-- Login: ' + @name&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;IF (@xstatus &amp;amp; 4) = 4&lt;br /&gt;BEGIN -- NT authenticated account/group&lt;br /&gt;IF (@xstatus &amp;amp; 1) = 1&lt;br /&gt;BEGIN -- NT login is denied access&lt;br /&gt;SET @tmpstr = '' --'EXEC master..sp_denylogin ''' + @name + ''''&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;END&lt;br /&gt;ELSE&lt;br /&gt;BEGIN -- NT login has access&lt;br /&gt;SET @tmpstr = 'IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE [name] = ''' + @name + ''')'&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;SET @tmpstr = CHAR(9) + 'CREATE LOGIN [' + @name + '] FROM WINDOWS'&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;END&lt;br /&gt;END&lt;br /&gt;ELSE&lt;br /&gt;BEGIN -- SQL Server authentication&lt;br /&gt;EXEC sp_hexadecimal @SID_varbinary, @SID_string OUT&lt;br /&gt;IF (@binpwd IS NOT NULL)&lt;br /&gt;BEGIN -- Non-null password&lt;br /&gt;EXEC sp_hexadecimal @binpwd, @txtpwd OUT&lt;br /&gt;SET @tmpstr = 'CREATE LOGIN [' + @name + '] WITH PASSWORD=' + @txtpwd + ' HASHED'&lt;br /&gt;END&lt;br /&gt;ELSE&lt;br /&gt;BEGIN -- Null password&lt;br /&gt;SET @tmpstr = 'CREATE LOGIN [' + @name + '] WITH PASSWORD='''''&lt;br /&gt;END&lt;br /&gt;SET @tmpstr = @tmpstr + ', CHECK_POLICY=OFF, SID=' + @SID_string&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;END&lt;br /&gt;FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb&lt;br /&gt;END&lt;br /&gt;IF @include_db = 1&lt;br /&gt;BEGIN&lt;br /&gt;PRINT ''&lt;br /&gt;PRINT ''&lt;br /&gt;PRINT ''&lt;br /&gt;PRINT '/***** SET DEFAULT DATABASES *****/'&lt;br /&gt;FETCH FIRST FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb&lt;br /&gt;WHILE @@fetch_status = 0&lt;br /&gt;BEGIN&lt;br /&gt;PRINT ''&lt;br /&gt;SET @tmpstr = '-- Login: ' + @name&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;SET @tmpstr = 'ALTER LOGIN [' + @name + '] WITH DEFAULT_DATABASE=[' + @dfltdb + ']'&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb&lt;br /&gt;END&lt;br /&gt;END&lt;br /&gt;IF @include_role = 1&lt;br /&gt;BEGIN&lt;br /&gt;PRINT ''&lt;br /&gt;PRINT ''&lt;br /&gt;PRINT ''&lt;br /&gt;PRINT '/***** SET SERVER ROLES *****/'&lt;br /&gt;FETCH FIRST FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb&lt;br /&gt;WHILE @@fetch_status = 0&lt;br /&gt;BEGIN&lt;br /&gt;PRINT ''&lt;br /&gt;SET @tmpstr = '-- Login: ' + @name&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;IF @xstatus &amp;amp;16 = 16 -- sysadmin&lt;br /&gt;BEGIN&lt;br /&gt;SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''sysadmin'''&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;END&lt;br /&gt;IF @xstatus &amp;amp;32 = 32 -- securityadmin&lt;br /&gt;BEGIN&lt;br /&gt;SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''securityadmin'''&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;END&lt;br /&gt;IF @xstatus &amp;amp;64 = 64 -- serveradmin&lt;br /&gt;BEGIN&lt;br /&gt;SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''serveradmin'''&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;END&lt;br /&gt;IF @xstatus &amp;amp;128 = 128 -- setupadmin&lt;br /&gt;BEGIN&lt;br /&gt;SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''setupadmin'''&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;END&lt;br /&gt;IF @xstatus &amp;amp;256 = 256 --processadmin&lt;br /&gt;BEGIN&lt;br /&gt;SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''processadmin'''&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;END&lt;br /&gt;IF @xstatus &amp;amp;512 = 512 -- diskadmin&lt;br /&gt;BEGIN&lt;br /&gt;SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''diskadmin'''&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;END&lt;br /&gt;IF @xstatus &amp;amp;1024 = 1024 -- dbcreator&lt;br /&gt;BEGIN&lt;br /&gt;SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''dbcreator'''&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;END&lt;br /&gt;IF @xstatus &amp;amp;4096 = 4096 -- bulkadmin&lt;br /&gt;BEGIN&lt;br /&gt;SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''bulkadmin'''&lt;br /&gt;PRINT @tmpstr&lt;br /&gt;END&lt;br /&gt;FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb&lt;br /&gt;END&lt;br /&gt;END&lt;br /&gt;CLOSE login_curs&lt;br /&gt;DEALLOCATE login_curs&lt;br /&gt;RETURN 0&lt;br /&gt;GO&lt;br /&gt;exec sp_help_revlogin_2000_to_2005 @login_name=NULL, @include_db=1, @include_role=1&lt;br /&gt;GO&lt;br /&gt;출력을 저장한 다음 대상 SQL Server 2005의 SQL Server Management Studio에 붙여 넣고 실행합니다.참고 원본 SQL Server에 암호가 비어 있는 로그인이 포함되어 있으면 출력에 다음과 유사한 문이 들어 있습니다.&lt;br /&gt;CREATE LOGIN LoginName WITH PASSWORD = '', CHECK_POLICY = OFF, SID = MySID&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/246133/ko"&gt;http://support.microsoft.com/kb/246133/ko&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-4918081731448369921?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/4918081731448369921/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/sql-server-2000-sql-server-2005.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/4918081731448369921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/4918081731448369921'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/sql-server-2000-sql-server-2005.html' title='SQL Server 2000에서 SQL Server 2005로 로그인 및 암호를 전송하는 경우'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-651179813250794985</id><published>2009-11-25T20:57:00.000-08:00</published><updated>2009-11-25T20:59:35.667-08:00</updated><title type='text'>SQL Azure 알아보기(2) – 데이터베이스 스키마 마이그레이션, 데이터 전송</title><content type='html'>이전 블로그에서 SSMS를 통해서 간단히 데이터베이스 관련 개체를 생성해보았는데 실제 Sample 데이터베이스 같은 스키마와 데이터를 SQL Azure로 마이그레이션해서 클라우드 웹 응용 프로그램 등을 지원하게 해야 하므로 로컬 데이터베이스를 SQL Azure로 마이그레이션하는 방법을 알아보려고 합니다.&lt;br /&gt;&lt;br /&gt;AdventureWork2008 예제 데이터베이스를 통해서 시도를 해보겠습니다. 스크립트는 Sqlcmd를 통&lt;br /&gt;해서 접근할 수 도 있습니다.&lt;br /&gt;&lt;br /&gt;일단 로컬 서버의 AdventureWork2008 데이터베이스의 스키마를 실행해보면 지원되지 않는 T-SQL 기능들을 알 수 있습니다. 지원되지 않는 T-SQL 기능들을 정리하고 스키마와 데이터를 SQL Azure에 게시해보도록 하겠습니다.&lt;br /&gt;&lt;br /&gt;AdventureWork2008 의 스키마를 생성하기 위해 데이터베이스를 오른쪽 클릭하여 태스크 메뉴에서 스크립트 생성을 클릭합니다.&lt;br /&gt;&lt;br /&gt;옵션들을 default 로 해서 스키마를 생성해 ‘HJ’ 데이터베이스에서 실행해보겠습니다.&lt;br /&gt;HJ 데이터베이스에서 실행할 것이므로 데이터베이스 생성, USE 구문에 대한 부분은 제거합니다.&lt;br /&gt;생성된 스크립트를 실행해보면 “sys.sp_addextendedproperty” 저장 프로시저를 찾을 수 없다는 에러가 발생합니다.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_GNqgS-rOx8w/Sw4LCzvCroI/AAAAAAAAApY/n_zIyZaIB7g/s1600/SQLAzure2-1.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408272345393704578" style="WIDTH: 311px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://2.bp.blogspot.com/_GNqgS-rOx8w/Sw4LCzvCroI/AAAAAAAAApY/n_zIyZaIB7g/s320/SQLAzure2-1.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;[그림2-1 스크립트 생성]&lt;br /&gt;그래서 위 그림과 같이 스크립트를 생성할 때 옵션을 수정해주어야 합니다.&lt;br /&gt;&lt;br /&gt;l  Convert UDDTs to Base Types =&gt; True&lt;br /&gt;l  USE Database 스크립팅 =&gt; False&lt;br /&gt;l  확장 속성 스크립팅=&gt; False&lt;br /&gt;스크립트 생성에서 옵션을 지정했지만 CREATE TYPE 구문 등은 남아있으므로 아래와 같은 정리 작업을 해주어야 실행이 성공할 수 있습니다.&lt;br /&gt;l  ANSI_NULLS 제거&lt;br /&gt;l  CREATE TYPE 구문 제거&lt;br /&gt;l  ON FileGroup 을 Primary 그룹으로 변경&lt;br /&gt;l  NOT FOR REPLICATION 제거&lt;br /&gt;l  PAD_INDEX 제거&lt;br /&gt;l  Windows LOGIN&lt;br /&gt;l  INDEX 관련&lt;br /&gt;l  XML SCHEMA 관련&lt;br /&gt;l  XML INDEX 구문 제거&lt;br /&gt;l  ON [Primary] 구문 제거&lt;br /&gt;l  HierarchId, FILESTREAM&lt;br /&gt;생각보다 정리할게 너무 많고 손이 참 많이 갑니다.  왜 해야되냐는 의구심이 팍 ㅠㅠ힘내서 자 성공적으로 끝나고 아래 그림과 같이 테이블과 개체들이 생성되었습니다&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_GNqgS-rOx8w/Sw4LAqI986I/AAAAAAAAApQ/fubmzBaoLLw/s1600/SQLAzure2-2.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408272308458353570" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 201px" alt="" src="http://4.bp.blogspot.com/_GNqgS-rOx8w/Sw4LAqI986I/AAAAAAAAApQ/fubmzBaoLLw/s320/SQLAzure2-2.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;   [그림2-2 스크립트 실행]&lt;br /&gt; &lt;br /&gt;이제 데이터를 전송, 게시해보도록 하겠습니다.&lt;br /&gt;게시 마법사를 통해 INSERT 구문을 실행해도 상관없으며 SQL Server Integration Services(SSIS)를 이용해서 접근할 수도 있습니다. 실무라면 SSIS가 더 일반적이겠죠.&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_GNqgS-rOx8w/Sw4K-DTpHOI/AAAAAAAAApI/oLUM3rs_-Vc/s1600/SQLAzure2-3.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408272263674404066" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 255px" alt="" src="http://2.bp.blogspot.com/_GNqgS-rOx8w/Sw4K-DTpHOI/AAAAAAAAApI/oLUM3rs_-Vc/s320/SQLAzure2-3.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;[그림2-3 INSERT]&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_GNqgS-rOx8w/Sw4K7osFNMI/AAAAAAAAApA/YZ5lWuas2bQ/s1600/SQLAzure2-4.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408272222169412802" style="WIDTH: 284px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://4.bp.blogspot.com/_GNqgS-rOx8w/Sw4K7osFNMI/AAAAAAAAApA/YZ5lWuas2bQ/s320/SQLAzure2-4.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[그림2-4 SSIS]&lt;br /&gt;&lt;br /&gt;이상 클라우딩 환경에서 이용할 데이터베이스 개체와 데이터를 간단히 처리해보았습니다.&lt;br /&gt;지원되지 않는 T-SQL 기능에 대한 부분은 아래 링크를 확인해보시기 바랍니다. 아직 CTP1이랍니다.&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee336281.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee336281.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee336253.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee336253.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;감사합니다.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;출처 :&lt;a href="http://vsts2010.tistory.com/131"&gt;http://vsts2010.tistory.com/131&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-651179813250794985?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/651179813250794985/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/sql-azure-2.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/651179813250794985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/651179813250794985'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/sql-azure-2.html' title='SQL Azure 알아보기(2) – 데이터베이스 스키마 마이그레이션, 데이터 전송'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_GNqgS-rOx8w/Sw4LCzvCroI/AAAAAAAAApY/n_zIyZaIB7g/s72-c/SQLAzure2-1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-7382756267578109454</id><published>2009-11-25T20:52:00.000-08:00</published><updated>2009-11-25T20:57:35.139-08:00</updated><title type='text'>SQL Azure 알아보기 (1) - 데이터베이스 개체 생성</title><content type='html'>이전 블로그에서 SQL Azure 의 계정을 생성하고 ADO.NET으로 사용자 데이터베이스를 생성해보았습니다. 간단한 테스트였으며 SQL Azure의 Overview를 간단히 알아보았습니다.&lt;br /&gt;&lt;br /&gt;이번 블로그에서는 SQL Server Management Studio(SSMS) 를 이용하여 SQL Azure 데이터베이스에 데이터베이스 개체(데이터베이스, 테이블, 인덱스, 제약, 데이터)를 생성해보겠습니다. 향후 데이터베이스 개체를 웹 응용 프로그램에서 이용해 볼 것입니다.&lt;br /&gt;&lt;br /&gt;SQL Server Management Studio(SSMS)를 통해 SQL Azure 데이터베이스 서버를 접근해보도록 하겠습니다. 이전 블로그에서 본 것처럼 개체 탐색기에서는 연결이 안되었지만 아래 그림의 새 쿼리를 통하면 연결이 가능합니다.&lt;br /&gt;&lt;br /&gt;SSMS를 시작할 때 연결 창이나 개체 탐색기에서 연결을 사용하시면 이전 블로그에서와 같은 에러를 보실 수 있습니다. 그래서  ‘새 쿼리’ 메뉴를 선택하거나 파일&gt; 새로 만들기&gt; 데이터베이스 엔진 쿼리를 이용하시면 됩니다. 새 쿼리 메뉴를 클릭하시면 연결 창이 보이고 SQL Azure 서버주소와 계정과 암호를 입력하시면 됩니다.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_GNqgS-rOx8w/Sw4KY8Ddt_I/AAAAAAAAAo4/QAwYMHTbbVI/s1600/1.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408271626072340466" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 212px" alt="" src="http://1.bp.blogspot.com/_GNqgS-rOx8w/Sw4KY8Ddt_I/AAAAAAAAAo4/QAwYMHTbbVI/s320/1.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;[그림1-1 SQL Azure 서버에 연결]&lt;br /&gt;연결하시면 아래와 같은 경고 창을 보실 수 있습니다. 아래 경고에서는 확인을 선택합니다.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_GNqgS-rOx8w/Sw4KWAgYiZI/AAAAAAAAAow/2nCjzLwsQbk/s1600/2.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408271575727770002" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 64px" alt="" src="http://1.bp.blogspot.com/_GNqgS-rOx8w/Sw4KWAgYiZI/AAAAAAAAAow/2nCjzLwsQbk/s320/2.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;[그림 1-2 경고창]&lt;br /&gt;&lt;br /&gt;쿼리 창에서 아래와 같이 @@version 구문을 실행해봅니다. 그러면 SQL Azure 서버의 버전을 알 수 있습니다.&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_GNqgS-rOx8w/Sw4KS1Px8wI/AAAAAAAAAoo/JDwnF24MTTc/s1600/3.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408271521165734658" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 184px" alt="" src="http://1.bp.blogspot.com/_GNqgS-rOx8w/Sw4KS1Px8wI/AAAAAAAAAoo/JDwnF24MTTc/s320/3.gif" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div&gt;[그림 1-3 Version]&lt;br /&gt;&lt;br /&gt;사용자 데이터베이스를 만들기 위해 sys.databases 라는 카탈로그 뷰를 아래 그림과 같이 실행해 봅니다. 실행 결과에서 데이터베이스 목록을 알 수 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_GNqgS-rOx8w/Sw4KQbkplOI/AAAAAAAAAog/wB9kz0wctF8/s1600/4.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408271479914206434" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 182px" alt="" src="http://3.bp.blogspot.com/_GNqgS-rOx8w/Sw4KQbkplOI/AAAAAAAAAog/wB9kz0wctF8/s320/4.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;[그림 1-4 sys.databases]&lt;br /&gt;&lt;br /&gt;사용자 데이터베이스를 생성하기 위해 CREATE DATABASE 구문을 아래와 같이 실행해봅니다. 물리적인 데이터베이스 파일 위치까지 지정한 구문은 실행되지 않습니다. 마찬가지로 DROP DATABASE 구문도 실행 가능합니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_GNqgS-rOx8w/Sw4KNctA8XI/AAAAAAAAAoY/0_YA-khlaT8/s1600/5.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408271428678119794" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 207px" alt="" src="http://2.bp.blogspot.com/_GNqgS-rOx8w/Sw4KNctA8XI/AAAAAAAAAoY/0_YA-khlaT8/s320/5.gif" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;[그림 1-5 CREATE DATABASE]&lt;br /&gt;해당 사용자 데이터베이스로 이동해서 테이블 개체를 생성하려고 합니다. USE 구문을 사용하면 해당 데이터베이스가 존재하지 않는다는 에러 메시지가 나오면서 전환이 되지 않습니다. 사용자 데이터베이스로 이동할 경우는 아래와 같이 진행합니다.&lt;br /&gt;파일 &gt; 새로 만들기 &gt; 데이터베이스 엔진 쿼리를 선택해서 SQL Azure 서버 정보를 입력하고 옵션을 선택해서 연결할 데이터베이스부분에 데이터베이스 이름을 직접 타이핑해서 연결하면 됩니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_GNqgS-rOx8w/Sw4KFuyQMII/AAAAAAAAAoQ/zxysUXSEzhI/s1600/6.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408271296092975234" style="WIDTH: 303px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://3.bp.blogspot.com/_GNqgS-rOx8w/Sw4KFuyQMII/AAAAAAAAAoQ/zxysUXSEzhI/s320/6.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;[그림 1-6 DATABASE 연결]&lt;br /&gt;&lt;br /&gt; 이제 테이블을 생성해서 데이터를 추가해보도록 하겠습니다. 아래 그림과 같이 실행해서 테이블을 생성합니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_GNqgS-rOx8w/Sw4KCdSe04I/AAAAAAAAAoI/t7sYkBPYpbY/s1600/7.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408271239856706434" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 193px" alt="" src="http://4.bp.blogspot.com/_GNqgS-rOx8w/Sw4KCdSe04I/AAAAAAAAAoI/t7sYkBPYpbY/s320/7.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;[그림 1-7 테이블생성]&lt;br /&gt;&lt;br /&gt;CREATE 구문에 보는 것처럼 클러스터형 인덱스와 DEFAULT 제약이 생성된 것을 확인가능합니다.&lt;br /&gt;생성된 테이블에 INSERT 구문을 실행해봅니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_GNqgS-rOx8w/Sw4J8r1tREI/AAAAAAAAAoA/o2cKMUsZ6ko/s1600/8.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408271140683334722" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 221px" alt="" src="http://4.bp.blogspot.com/_GNqgS-rOx8w/Sw4J8r1tREI/AAAAAAAAAoA/o2cKMUsZ6ko/s320/8.gif" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div&gt;[그림 1-8 INSERT 테이블]&lt;br /&gt;물론 4번 데이터는 UPDATE  또는 DELETE를 수행할수 있습니다.~ 이상으로 SSMS를 이용하여 SQL Azure 서버에 데이터베이스, 테이블, 인덱스, 데이터 INSERT를 다루어 보았습니다. 다음 블로깅에서는 로컬에 있는 SQL Server 2008의 Sample 데이터베이스를 SQL Azure 로 게시를 해보겠습니다. 게시하면서 지원하지 않는 T-SQL에 대한 부분을 알아보겠습니다.&lt;br /&gt;감사합니다.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-7382756267578109454?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/7382756267578109454/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/sql-azure-1.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/7382756267578109454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/7382756267578109454'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/sql-azure-1.html' title='SQL Azure 알아보기 (1) - 데이터베이스 개체 생성'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GNqgS-rOx8w/Sw4KY8Ddt_I/AAAAAAAAAo4/QAwYMHTbbVI/s72-c/1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-5790989348444440600</id><published>2009-11-25T20:49:00.001-08:00</published><updated>2009-11-25T20:52:37.037-08:00</updated><title type='text'>SQL Azure - CTP1</title><content type='html'>﻿8월 25일 화요일에 SQL Azure CTP에 대한 초대 메일을 받아 아래 그림처럼 클라우드 데이터베이스를 구성해보았습니다. 기존과 달리 T-SQL이 많이 지원이 되어 ADO.NET 만 보면 개발자에게 익숙한 내용이라고 보여집니다. 데이터베이스를 로컬이나 서버에 두지 않고 클라우드에 놓겠다는것이며 프로그래밍은 거의 기존과 동일하게 가능하니깐요.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_GNqgS-rOx8w/Sw4I104sNPI/AAAAAAAAAno/oac1Jd4llH8/s1600/1.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408269923341055218" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 245px" alt="" src="http://4.bp.blogspot.com/_GNqgS-rOx8w/Sw4I104sNPI/AAAAAAAAAno/oac1Jd4llH8/s320/1.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;SQL Azure 데이터 액세스 구조는 아래 그림을 참조해주세요. ADO.NET 등의 응용 프로그램이나 Windows Azure를 통해 SQL Azure 데이터베이스를 액세스할 수 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_GNqgS-rOx8w/Sw4I6Mdr23I/AAAAAAAAAnw/MUTwgRqQelw/s1600/2.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408269998389713778" style="WIDTH: 238px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://4.bp.blogspot.com/_GNqgS-rOx8w/Sw4I6Mdr23I/AAAAAAAAAnw/MUTwgRqQelw/s320/2.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;클라우드 데이터베이스는 1개 서버에 5개 데이터베이스까지 현재는 지원하고 있으며 SQL Server Management Studio에서는 아직 아래 그림처럼 연결이 되지 않고 있습니다. 조만간 될 예정이라고 하니 그때는 좀 더 편하게 작업이 가능해져 SQL Azure에 대한 부분이 더 활성화 될것으로 보입니다.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_GNqgS-rOx8w/Sw4I9pd2_NI/AAAAAAAAAn4/1EOOKIumGYE/s1600/3.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408270057714678994" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 97px" alt="" src="http://1.bp.blogspot.com/_GNqgS-rOx8w/Sw4I9pd2_NI/AAAAAAAAAn4/1EOOKIumGYE/s320/3.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;SSMS 외에 SQL Azure에 접근할 수 있는 방법은 ADO.NET, SqlCmd를 이용한 방법이 있으며 이를 통해 대부분의 T-SQL 구문을 실행해볼수 있습니다. 아래는 SQL Azure 데이터베이스를 생성하기 위해 ADO.NET 으로 구현한 내용입니다. 아래 주소의 소스를 참고했습니다. &lt;a href="http://msdn.microsoft.com/en-us/library/ee336243.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee336243.aspx&lt;/a&gt;생성하려면 SQL Azure 계정이 있어야 하고 이를 통해 ADO.NET을 호출해야 합니다. 계정이 없는 분을 대신해서 제가 호출해보았습니다. 제 환경은 Visual Studio 2010 에서 c# Windows 응용 프로그램으로 접근합니다. 아래 소스는 클라우드 데이터베이스를 생성해주는 구문입니다. 다 알고 있는 것처럼 ADO.NET으로 CREATE DATABASE 구문을 실행해주는 내용입니다. 연결 문자열은 위에서 ConnectionStringBuilder 클래스를 통해 미리 생성해두었습니다. 사전에 정의된 계정으로 연결 문자열이 생성되며 실제 실행시켜 볼때는 계정이름을 &lt;a href="mailto:"&gt;'hongju@ServerName'&lt;/a&gt; 으로 하셔야 합니다.Windows 응용 프로그램에서 접근해서 클라우드 데이터베이스가 생성됩니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;01.using (SqlConnection conn = &lt;br /&gt;02.new SqlConnection(connString1Builder.ToString()))&lt;br /&gt;03.{&lt;br /&gt;04. using (SqlCommand command = conn.CreateCommand())&lt;br /&gt;05. {&lt;br /&gt;06.conn.Open();&lt;br /&gt;07.// 테스트 데이터베이스 생성&lt;br /&gt;08.string cmdText = String.Format("CREATE DATABASE {0}", sampleDatabaseName);&lt;br /&gt;09.command.CommandText = cmdText;&lt;br /&gt;10.command.ExecuteNonQuery();&lt;br /&gt;11.conn.Close();&lt;br /&gt;12.}&lt;br /&gt;13.}데이터베이스가 생성되었으니 테이블을 만들고 INSERT, SELECT는 아래처럼 기존 ADO.NET 코드와 동일하게 접근이 가능합니다. SqlCommand 로 작업하는 것은 다 아시니 불필요한 코드는 지면상 생략하겠습니다.~&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;01.// 테이블 생성&lt;br /&gt;02.command.CommandText = "CREATE TABLE T2(Col1 int primary key, Col2 nvarchar(20))";&lt;br /&gt;03.command.ExecuteNonQuery();&lt;br /&gt;04. &lt;br /&gt;05.// INSERT&lt;br /&gt;06.command.CommandText = "INSERT INTO T2 (col1, col2) values (8, N'한글 1'), (2, N'한글 2'), (3, N'한글 3')";&lt;br /&gt;07.int rowsAdded = command.ExecuteNonQuery();&lt;br /&gt;08.// SELECT&lt;br /&gt;09.command.CommandText = "SELECT * FROM T1";&lt;br /&gt;10.using (SqlDataReader reader = command.ExecuteReader())&lt;br /&gt;11.{&lt;br /&gt;12. // MessageBox로 결과 확인&lt;br /&gt;13. while (reader.Read())&lt;br /&gt;14.{&lt;br /&gt;15. MessageBox.Show(reader["Col1"].ToString().Trim() +reader["Col2"].ToString().Trim());&lt;br /&gt;16.}&lt;br /&gt;17.}유니코드로 한글을 입력하면 한글 결과를 확인할수 있습니다. 다 아시는 구문이며 SQL Azure라고 큰 차이는 없다는것을 확인 가능합니다. 아래 구문이 새로운 것은 아니며 SQL Server 2008에서 제공되는 구문이랍니다.INSERT INTO T2 (col1, col2) values (8, N'한글 1'), (2, N'한글 2'), (3, N'한글 3')기존 T-SQL과의 차이점 등은 아래 링크를 참조해주십시오.이상으로 SQL Azure CTP1에 대한 첫 소개를 말씀드렸습니다. 다음에는 보다 더 구체적인 예제로 SQL Azure를 접근해보겠습니다.감사합니다.SQL Azure Documentation:&lt;a href="http://msdn.microsoft.com/en-us/library/ee336279.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee336279.aspx&lt;/a&gt;&lt;br /&gt;SQL Azure Forum:&lt;a href="http://social.msdn.microsoft.com/forums/en-US/ssdsgetstarted/threads/"&gt;http://social.msdn.microsoft.com/forums/en-US/ssdsgetstarted/threads/&lt;/a&gt;&lt;br /&gt;Connecting to SQL Azure Using ADO.NET: &lt;a href="http://msdn.microsoft.com/en-us/library/ee336243.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee336243.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;출처 :&lt;a href="http://vsts2010.tistory.com/116"&gt;http://vsts2010.tistory.com/116&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-5790989348444440600?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/5790989348444440600/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/sql-azure-ctp1_25.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/5790989348444440600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/5790989348444440600'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/sql-azure-ctp1_25.html' title='SQL Azure - CTP1'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_GNqgS-rOx8w/Sw4I104sNPI/AAAAAAAAAno/oac1Jd4llH8/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-3028199122135054136</id><published>2009-11-25T20:37:00.000-08:00</published><updated>2009-11-25T20:41:55.376-08:00</updated><title type='text'>클라우드 Azure 관련 PPT</title><content type='html'>&lt;a href="http://www.slideshare.net/TedAhn/getting-start-of-azure-services-platform?src=embed"&gt;http://www.slideshare.net/TedAhn/getting-start-of-azure-services-platform?src=embed&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-3028199122135054136?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/3028199122135054136/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/azure-ppt.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/3028199122135054136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/3028199122135054136'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/azure-ppt.html' title='클라우드 Azure 관련 PPT'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-4794601337905515956</id><published>2009-11-25T20:20:00.000-08:00</published><updated>2009-11-25T20:21:32.828-08:00</updated><title type='text'>Azure Services in Visual Studio 2010 Beta 2</title><content type='html'>&lt;p&gt;해당 사이트에 동영상 제공:&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2009/11/16/video-azure-services-in-visual-studio-2010-beta-2-part-iii.aspx"&gt;http://blogs.msdn.com/charlie/archive/2009/11/16/video-azure-services-in-visual-studio-2010-beta-2-part-iii.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Video: Azure Services in Visual Studio 2010 Beta 2, Part III&lt;br /&gt;This is the first of three videos showing how Visual Studio 2010 Beta 2 provides support for the development and deployment of Azure Services applications. In these short How Do I Videos, I filmed Jim Nakashima as he demonstrated practical techniques for quickly deploying applications to the cloud. These videos will eventually be published in the &lt;a href="http://msdn.microsoft.com/en-us/vcsharp/bb798022.aspx"&gt;How Do I&lt;/a&gt; section of the &lt;a href="http://msdn.microsoft.com/en-us/vcsharp/default.aspx"&gt;C# Dev Center&lt;/a&gt;. I’m hosting them here for now, so that they will be available in time for PDC.&lt;br /&gt;Azure Services in Visual Studio Part III&lt;br /&gt;&lt;br /&gt;Download the Videos&lt;br /&gt;Click the links below to download the videos to your local machine and view them at their native 1024 X 768 resolution.&lt;br /&gt;&lt;a href="http://silverlight.services.live.com/14488/Azure%20Services%20with%20Visual%20Studio%20Part%2001/video.wmv" s_oidt="0" s_oid="http://silverlight.services.live.com/14488/Azure%20Services%20with%20Visual%20Studio%20Part%2001/vid"&gt;Azure Services with Visual Studio Part I&lt;/a&gt;&lt;br /&gt;&lt;a href="http://silverlight.services.live.com/14488/Azure%20Services%20in%20Visual%20Studio%20Part%20II/video.wmv"&gt;Azure Services with Visual Studio Part II&lt;/a&gt;&lt;br /&gt;&lt;a href="http://silverlight.services.live.com/14488/Azure%20Services%20with%20Visual%20Studio%20Part%20III/video.wmv"&gt;Azure Services with Visual Studio Part III&lt;/a&gt;&lt;br /&gt;Other Posts in this Series&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;출처 : &lt;a href="http://blogs.msdn.com/charlie/archive/2009/11/16/video-azure-services-in-visual-studio-2010-beta-2-part-iii.aspx"&gt;http://blogs.msdn.com/charlie/archive/2009/11/16/video-azure-services-in-visual-studio-2010-beta-2-part-iii.aspx&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-4794601337905515956?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/4794601337905515956/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/azure-services-in-visual-studio-2010.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/4794601337905515956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/4794601337905515956'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/azure-services-in-visual-studio-2010.html' title='Azure Services in Visual Studio 2010 Beta 2'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-4796537728732117881</id><published>2009-11-25T20:16:00.001-08:00</published><updated>2009-11-25T20:18:29.307-08:00</updated><title type='text'>Windows Azure Platform</title><content type='html'>&lt;a href="http://www.blogger.com/post-edit.g?blogID=3197262865040432934&amp;amp;postID=4796537728732117881#.EC.9A.94.EC.95.BD"&gt;1 요약&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3197262865040432934&amp;amp;postID=4796537728732117881#.EC.9C.88.EB.8F.84.EC.9A.B0_.EC.95.A0.EC.A0.80_.ED.94.8C.EB.9E.AB.ED.8F.BC"&gt;2 윈도우 애저 플랫폼&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3197262865040432934&amp;amp;postID=4796537728732117881#.EC.9C.88.EB.8F.84.EC.9A.B0_.EC.95.A0.EC.A0.80"&gt;2.1 윈도우 애저&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3197262865040432934&amp;amp;postID=4796537728732117881#.EC.95.A0.ED.94.8C.EB.A6.AC.EC.BC.80.EC.9D.B4.EC.85.98_.EA.B5.AC.EB.8F.99_.28Compute_.EC.84.9C.EB.B9.84.EC.8A.A4.29"&gt;2.1.1 애플리케이션 구동 (Compute 서비스)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3197262865040432934&amp;amp;postID=4796537728732117881#.EB.8D.B0.EC.9D.B4.ED.84.B0.EB.A5.BC_.EC.A0.80.EC.9E.A5_.28Storage_.EC.84.9C.EB.B9.84.EC.8A.A4.29"&gt;2.1.2 데이터를 저장 (Storage 서비스)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3197262865040432934&amp;amp;postID=4796537728732117881#.EC.9C.88.EB.8F.84.EC.9A.B0_.EC.95.A0.EC.A0.80_.ED.94.8C.EB.9E.AB.ED.8F.BC_2"&gt;2.2 윈도우 애저 플랫폼&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3197262865040432934&amp;amp;postID=4796537728732117881#.NET_Services"&gt;2.2.1 .NET Services&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3197262865040432934&amp;amp;postID=4796537728732117881#SQL_Azure"&gt;2.2.2 SQL Azure&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3197262865040432934&amp;amp;postID=4796537728732117881#Live_Services"&gt;2.2.3 Live Services&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3197262865040432934&amp;amp;postID=4796537728732117881#.EC.B0.B8.EA.B3.A0.EB.AC.B8.ED.97.8C"&gt;3 참고문헌&lt;/a&gt;&lt;br /&gt;요약&lt;br /&gt;마이크로소프트의 &lt;a title="Cloud Computing" href="http://www.architecturejournal.org/wiki/Cloud_Computing"&gt;클라우드 컴퓨팅&lt;/a&gt; 기술은 “&lt;a class="new" title="Software+Service (page does not exist)" href="http://www.architecturejournal.org/w/index.php?title=Software%2BService&amp;amp;action=edit&amp;amp;redlink=1"&gt;소프트웨어 + 서비스(Software + Services, 줄여서 S+S)&lt;/a&gt;”라는 전략을 바탕으로 하여:&lt;br /&gt;대량 &lt;a class="new" title="Virtualization (page does not exist)" href="http://www.architecturejournal.org/w/index.php?title=Virtualization&amp;amp;action=edit&amp;amp;redlink=1"&gt;가상화&lt;/a&gt; 그리드 (Massive Virtualization Grid) 기술&lt;br /&gt;클라우드 클라이언트(Cloud Client) 기술&lt;br /&gt;클라우드 서비스 플랫폼(Cloud Services Platform) 기술&lt;br /&gt;클라우드 서비스로 확장 연동(Scale Out To Cloud Services)하는 기술&lt;br /&gt;모두 네 가지 서로 다른 기술 시나리오의 총합으로 요약할 수 있다. 본 글에서는 이 가운데 (2),(3),(4)에 해당하는 윈도우 애저 플랫폼(Windows Azure Platform) 기술에 중점을 두고 여타 클라우드 컴퓨팅 기술과 대비되는 차별성을 논한다.&lt;br /&gt;글쓴이&lt;br /&gt;&lt;a title="User:Acroama" href="http://www.architecturejournal.org/wiki/User:Acroama"&gt;장현춘, 솔루션 아키텍트&lt;/a&gt;&lt;br /&gt;&lt;a title="User:Davidshin" href="http://www.architecturejournal.org/wiki/User:Davidshin"&gt;신현석, 인프라 아키텍트&lt;/a&gt; &lt;a id=".EC.9C.88.EB.8F.84.EC.9A.B0_.EC.95.A0.EC.A0.80_.ED.94.8C.EB.9E.AB.ED.8F.BC" name=".EC.9C.88.EB.8F.84.EC.9A.B0_.EC.95.A0.EC.A0.80_.ED.94.8C.EB.9E.AB.ED.8F.BC"&gt;&lt;/a&gt;&lt;br /&gt;윈도우 애저 플랫폼&lt;br /&gt;애저 서비스 플랫폼은 2008년 10월 말경 공식 발표되었다. 애저 서비스 플랫폼은 [그림 1]과 같이 윈도우 애저(Windows Azure)라 명명된 클라우드 운영체제와 다섯 개의 서비스 개발자 블록을 한 데 묶은 통칭이다. 이는 그간 하드웨어 업체를 중심으로 데이터 센터의 고도화된 인프라스트럭처(Infrastructure) 구성에 중점을 두고 클라우두 컴퓨팅의 가치를 해석하던 것과는 달리, 어플리케이션 개발의 편의성과 비용 측면에서 초점을 맞추어 “고성능의 SaaS 플랫폼(High-performance SaaS Platform)”을 실현하는데 클라우드 컴퓨팅을 활용하였다는 점에서 차별성과 의의를 찾을 수 있다. 지금부터는 애저 서비스 플랫폼이 제공하는 서비스 블록들의 기능적 특성을 차례로 상세하게 설명한다. &lt;a id=".EC.9C.88.EB.8F.84.EC.9A.B0_.EC.95.A0.EC.A0.80" name=".EC.9C.88.EB.8F.84.EC.9A.B0_.EC.95.A0.EC.A0.80"&gt;&lt;/a&gt;&lt;br /&gt;윈도우 애저&lt;br /&gt;Windows Azure는 두 가지 중요한 일, 애플리케이션을 구동(Compute), 데이터를 저장(Storage)하는 역할을 한다. Windows Azure는 마이크로소프트 데이터센터에 존재하는 수많은 서버를 통합 운영하여 강력한 프로세싱 파워를 낼 수 있는데, Fabric이라고 하는 개념을 기반으로 Compute &amp;amp; Storage서비스가 구축 되어 있다. Compute 서비스는 Windows Server 기반으로 이루어져 있고, 초기 CTP(Community Technology Preview) 버전에서는 .NET Framework 기반으로 구축된 애플리케이션만 구동되지만, Unmanaged 코드 역시 지원할 계획을 가지고 있다. CTP 버전에서는 ASP.NET 애플리케이션과 Windows Communication Foundation (WCF) 서비스 같은 .NET 기반의 소프트웨어를 만들 수 있는데 C#, 기타 다른 .NET 언어를 Visual Studio 2008 같은 개발 도구를 이용할 수 있다.&lt;br /&gt;&lt;a class="image" title="File:Windows Azure.gif" href="http://www.architecturejournal.org/wiki/File:Windows_Azure.gif"&gt;&lt;/a&gt;&lt;a id=".EC.95.A0.ED.94.8C.EB.A6.AC.EC.BC.80.EC.9D.B4.EC.85.98_.EA.B5.AC.EB.8F.99_.28Compute_.EC.84.9C.EB.B9.84.EC.8A.A4.29" name=".EC.95.A0.ED.94.8C.EB.A6.AC.EC.BC.80.EC.9D.B4.EC.85.98_.EA.B5.AC.EB.8F.99_.28Compute_.EC.84.9C.EB.B9.84.EC.8A.A4.29"&gt;&lt;/a&gt;&lt;br /&gt;애플리케이션 구동 (Compute 서비스)&lt;br /&gt;애플리케이션은 보통 여러 개의 Instance를 가지고 있고, 각 Instance는 독자적인 VM 안에서 구동 된다. 이 VM들은 64비트 Windows Server 2008 환경이고, Cloud에서 사용되도록 디자인된 Hypervisor에 의해 서비스 된다. Windows Azure 애플리케이션은 실제로 그 VM을 볼 수 없도록 설계되어 있다. CTP 버전에서는 Web Role, Worker Role Instance를 통해서 .NET 3.5 애플리케이션을 만들도록 구성되어 있다. Web Role Instance는 IIS7 웹서버를 경유하여 HTTP(HTTPs) 요청을 받아 들인다. Web Role은 ASP.NET, WCF, .NET Framework 기술을 통해 구현하는데 Web Role Instance 간에 요청을 분산시킬 수 있도록 Built-In 로드밸런싱을 지원한다. Worker Role Instance는 외부로부터 요청을 직접 받아들 일 수 없게 되어 있기 때문에 외부의 네트웍 커넥션은 허용되지 않고, 웹서버가 VM 내부에 구동 되지 않는다. 입력이 Web Role Instance로 부터 들어와서, Windows Azure Storage 내부의 Queue에 저장된 후 작업 결과 값이 Windows Azure Storage에 저장되거나 외부로 보내진다. Incoming HTTP 요청을 처리하고, 요청이 처리된 후 종료되는 Web Role과 다르게 Worker Role Instance는 배치 작업처럼 무한히 구동될 수 있다.&lt;br /&gt;Windows Azure의 초기 배포 버전은 VM과 물리적 프로세서 코어 간에 1:1 관계를 유지하게 되어 있고 이 원칙을 통해 각 애플리케이션의 성능이 보장된다. 각 Web Role, Worker Role Instance는 자신에게 할당된 프로세서 코어가 있는 것이다. 애플리케이션의 성능을 증가시키기 위해, 소유자는 애플리케이션 설정 파일 안에 운영되는 Instance의 수를 증가시킬 수 있다. 그런 후에 Windows Azure Fabric이 새로운 VM을 생성한 후, 코어에 할당하고 이 애플리케이션에 더 많은 Instance를 구동하도록 한다. Fabric은 또한 Web Role, Worker Role Instance에 오류가 발생했을 때 새로운 Instance를 구동해주는 역할을 한다. Windows Azure의 Web Role Instance는 stateless 형태를 지원한다. 상태 정보를 처리하기 위해서는 Windows Azure Storage를 사용하거나 쿠키를 이용해야 한다. Web Role의 statelessness는 또한 Windows Azure의 Built-In Load Balancer에 의한 특징이다. 요청이 특정 웹 Role Instance에게만 보내지는 것이 허용되지 않기 때문이고, 한 사용자가 사용하는 여러 요청들이 동일 Instance로 보내진다는 보장이 없기 때문이다. Web Role과 Worker Role은 모두 표준 .NET 기술을 사용하여 구현되었다. 그러나, 현재 있는 .NET Framework 애플리케이션을 Windows Azure로 변경 없이 사용하도록 하는 것은 불가능하다. 애플리케이션이 스토리지를 접근하는 방식이 다르기 때문이다. Worker role Instance는 입력을 위해 Windows Azure 스토리지의 큐를 이용한다. 개발의 편의를 위해 제공되는 Windows Azure 소프트웨어 개발 Kit은 개발자의 데스크탑에서 구동할 수 있는 Windows Azure Environment를 포함하고 있다. 이 Windows Azure-in-a-box는 Windows Azure Storage, Windows Azure agent, 그리고 Cloud에서 애플리케이션이 구동되기 위해 필요한 것은 다 포함되어 있다. 개발자는 이 환경에서 애플리케이션 디버깅을 할 수 있고, 테스트가 완료됐을 때 실제 Windows Azure Cloud로 배포할 수 있다. Windows Azure fabric은 애플리케이션 실패를 감지하고, 결과를 보낼 수 있다. 또한, Windows Azure platform은 애플리케이션의 자원 소비량, 프로세서 시간, incoming &amp;amp; outcome 대역폭, 스토리지 등에 대한 상세한 정보를 제공한다. &lt;a id=".EB.8D.B0.EC.9D.B4.ED.84.B0.EB.A5.BC_.EC.A0.80.EC.9E.A5_.28Storage_.EC.84.9C.EB.B9.84.EC.8A.A4.29" name=".EB.8D.B0.EC.9D.B4.ED.84.B0.EB.A5.BC_.EC.A0.80.EC.9E.A5_.28Storage_.EC.84.9C.EB.B9.84.EC.8A.A4.29"&gt;&lt;/a&gt;&lt;br /&gt;데이터를 저장 (Storage 서비스)&lt;br /&gt;애플리케이션은 데이터와 다양한 방식으로 동작한다. (Blob, Queues, Tables) Blobs은 가장 간단한 방식이다. Windows Azure Storage의 계정은 Container, 50기가 바이트의 크기까지 저장 가능한 Blob, 더 작은 단위인 Block으로 구성되어 있다. 만약 오류가 발생하면, 전체 Blob을 다시 보내는 것이 아니고 가장 최근의 Block을 다시 보내준다. Blobs은 JPEG 사진이 어디서 찍었고, MP3파일의 작곡가가 누구인지 등에 메타데이터 정보를 가질 수 있다.&lt;br /&gt;또 다른 유형인 Tables의 경우 Entity의 계층 구조를 저장할 수 있다. 정해진 스키마를 가지고 있지 않고, 프로퍼티를 통해 다양한 유형의 데이터 타입, 문자열, Int, Bool, DateTime등을 가질 수 있다. 테이블은 여러 서버에 파티션으로 나뉘어 저장되기 때문에 수십억 개의 Entity를 저장할 수 있다.&lt;br /&gt;Queues는 Web Role Instance가 Worker Role Instance와 통신할 수 있는 방법을 제공 한다. 사용자가 Windows Azure Web Role을 통해 구현된 웹 페이지에서 컴퓨팅을 많이 필요로 하는 작업을 요청할 경우 Web Role Instance가 어떤 작업이 이루어져야 하는지를 큐에 메시지로 넣고 Worker Role Instance가 이 큐 값을 읽어서 정해진 작업을 수행하고, 다른 큐를 통해 해당 결과 값을 돌려줄 수 있다. Blobs, Tables, Queues에 관계 없이 Windows Azure storage에 저장된 데이터는 Fault Tolerance를 위해 3번 복제 된다.&lt;br /&gt;Windows Azure storage는 REST 방식을 사용한다. 모든 자원은 URI로 이름이 부여되고, 표준 HTTP 방식으로 처리된다. .NET 클라이언트는 ADO.NET 서비스나 LINQ를 사용할 수 있지만, Java 애플리케이션으로는 표준 REST 방식을 사용할 수 있다. Blob이 HTTP GET을 이용해, URI를 호출하는 방법은 아래와 같다. &lt;a class="external free" title="http://" href="http:///" rel="nofollow"&gt;http://&lt;/a&gt;&lt;storageaccount&gt;.blob.core.windows.net/&lt;container&gt;/&lt;blobname&gt;&lt;br /&gt;&lt;storage&gt;'는 새로운 Storage Account가 생성될 때 지정되는 식별자이다. &lt;container&gt;, &lt;blobname&gt;은 Container의 이름,이 요청이 접근할 Blob의 이름이다.&lt;br /&gt;Tables, Queues 역시 유사한 방식을 사용한다. Windows Azure 플랫폼은 Compute와 Storage 자원을 개별적으로 비용을 책정하기 때문에 On-Premise 애플리케이션이 RESTful 방식으로 Windows Azure Storage를 사용할 수 있다. &lt;a id=".EC.9C.88.EB.8F.84.EC.9A.B0_.EC.95.A0.EC.A0.80_.ED.94.8C.EB.9E.AB.ED.8F.BC_2" name=".EC.9C.88.EB.8F.84.EC.9A.B0_.EC.95.A0.EC.A0.80_.ED.94.8C.EB.9E.AB.ED.8F.BC_2"&gt;&lt;/a&gt;&lt;br /&gt;윈도우 애저 플랫폼&lt;br /&gt;Windows Azure와 함께 Windows Azure Platform을 구성하는 다른 한 축은 개발자가 사용할 수 있는 클라우드 스케일의 빌딩 블록 서비스 모음이라 할 수 있는 Azure Services이다. 아래 그림에서 보듯이 Windows Azure가 제공하는 클라우드 OS로서의 기본 서비스와는 차별되는 고급 기능을 제공하며, 여기에는 .NET Services, SQL Azure 등이 현재 제공되고 있으며 향후 Live Services, Sharepoint Services, Dynamic CRM Services과 같이 현재 마이크로소프트가 SaaS 서비스로 제공하고 있는 기능과 연동할 수 있는 기능을 제공할 예정이다.&lt;br /&gt;&lt;a class="image" title="Windows Azure Platform.gif" href="http://www.architecturejournal.org/wiki/File:Windows_Azure_Platform.gif"&gt;&lt;/a&gt;&lt;a id=".NET_Services" name=".NET_Services"&gt;&lt;/a&gt;&lt;br /&gt;.NET Services&lt;br /&gt;.NET Services는 일반적인 닷넷 애플리케이션 개발에서 .NET Framework이 제공하던 기능을 클라우드 스케일로 확장한 개념이다. 즉, 클라우드 상의 애플리케이션이 서비스를 노출함에 있어서 접근하는 사용자를 어떻게 인증할 것이며, 방화벽으로 막혀 있는 서비스들 사이의 연동은 어떻게 가능하게 할 것이며, 클라우드 상에서 워크플로우를 실행시켜 나의 애플리케이션 상의 워크플로우와 어떻게 연동할 것인가 등에 대한 입증된 빌딩 블록 서비스를 제공하는 것이다. SOA 기반의 인프라를 갖추기 위해 기업들은 ESB (Enterprise Service Bus)를 도입하여 표준 웹 서비스 기반으로 기업내 다양한 애플리케이션간 서비스 연동을 지원하는데, ESB가 클라우드 스케일로 확장되어 기업간 애플리케이션간 서비스 연동을 제공하는 것이 ISB (Internet Service Bus)이며, ISB의 마이크로소프트 버전 구현체가 바로 .NET Service Bus인 것이다.&lt;br /&gt;&lt;a class="image" title=".NET Service.gif" href="http://www.architecturejournal.org/wiki/File:.NET_Service.gif"&gt;&lt;/a&gt;&lt;br /&gt;그림에서 보듯이 .NET Service Bus는 서비스 제공자는 마이크로소프트 데이터 센터에 개설한 자신의 계정에 서비스를 노출하고, 서비스 사용자는 http 프로토콜을 통해 일반 웹 서비스를 호출하는 방식으로 접근할 수 있는 방법을 제공한다. Access Control Services는 다양한 인증 체계를 가진 서비스들 사이에 SAML과 같은 합의된 Federation 표준 기반의 토큰 서비스를 통해 연동할 수 있는 방법을 제공한다. &lt;a id="SQL_Azure" name="SQL_Azure"&gt;&lt;/a&gt;&lt;br /&gt;SQL Azure&lt;br /&gt;SQL Services는 마이크로소프트의 SQL Server가 제공하는 각종 Relational한 기능들, 즉 리포팅, 분석, 데이터 동기화, Relational 쿼리 등을 클라우드 서비스로 제공하는 것으로 현재 SQL Data Services (SDS)를 통해 일부 기능을 제공하고 있다. SQL Server 기반으로 구현되어 있는 SDS는 현재 버전의 CTP에서는 일반적인 Relational한 데이터베이스 접근 방식을 제공하지는 않고 REST 및 SOAP 기반의 웹 서비스 인터페이스를 제공하고 있다. 하지만, 향후 SDS의 방향은 Transact-SQL을 지원하여 현재 개발자가 사용하고 있는 Relational한 쿼리를 그대로 활용할 수 있는 클라우드 상의 Relational Database로 역할을 할 예정이며, 이를 통해 앞서 기술한 Windows Azure내의 Storage 서비스와는 차별화된 서비스를 제공하게 된다.&lt;br /&gt;&lt;a class="image" title="SQL Service.png" href="http://www.architecturejournal.org/wiki/File:SQL_Service.png"&gt;&lt;/a&gt;&lt;a id="Live_Services" name="Live_Services"&gt;&lt;/a&gt;&lt;br /&gt;Live Services&lt;br /&gt;Live Services Live Services는 Windows Live Hotmail, Windows Live Messenger 등 기존에 마이크로소프트가 제공하던 각종 Windows Live 애플리케이션과의 원활한 연동을 제공하며 개발자는 Live Services가 제공하는 Live Framework을 통해 일관된 방식으로 마이크로소프트의 각종 Live 애플리케이션이 관리하는 데이터에 접근할 수 있다. 즉, 아래 그림에서 보듯이 Hotmail이나 Messenger에서 관리되고 제공되는 엄청난 양의 개인 정보, 지인 연락처 정보, 지인의 로그인 여부, 검색 서비스 등에 대해 접근할 수 있으며 이를 기반으로 애플리케이션을 개발할 수 있고 또한 내 애플리케이션이 사용하는 데이터를 다양한 디바이스간에 동기화 기능도 제공할 수 있다.&lt;br /&gt;&lt;a class="image" title="Live Services.png" href="http://www.architecturejournal.org/wiki/File:Live_Services.png"&gt;&lt;/a&gt;&lt;br /&gt;현재 Live Services를 이용하여 마이크로소프트가 제공하는 서비스로 Live Mesh (&lt;a class="external free" title="http://www.mesh.com" href="http://www.mesh.com/" rel="nofollow"&gt;http://www.mesh.com/&lt;/a&gt;) 가 있으며, 다양한 디바이스간 데이터 및 애플리케이션 동기화 기능을 제공하고 있다. &lt;a id=".EC.B0.B8.EA.B3.A0.EB.AC.B8.ED.97.8C" name=".EC.B0.B8.EA.B3.A0.EB.AC.B8.ED.97.8C"&gt;&lt;/a&gt;&lt;br /&gt;참고문헌&lt;br /&gt;Windows (R) Azure(TM) Platform, Microsoft, &lt;a class="external free" title="http://www.azure.com" href="http://www.azure.com/" rel="nofollow"&gt;http://www.azure.com/&lt;/a&gt;&lt;br /&gt;David Chappell, “Introducing The Azure Services Platform,” &lt;a class="external free" title="http://download.microsoft.com/download/e/4/3/e43bb484-3b52-4fa8-a9f9-ec60a32954bc/Azure_Services_Platform.pdf" href="http://download.microsoft.com/download/e/4/3/e43bb484-3b52-4fa8-a9f9-ec60a32954bc/Azure_Services_Platform.pdf" rel="nofollow"&gt;http://download.microsoft.com/download/e/4/3/e43bb484-3b52-4fa8-a9f9-ec60a32954bc/Azure_Services_Platform.pdf&lt;/a&gt;, 2008.10&lt;br /&gt;Microsoft, Azure Services Platform, &lt;a class="external free" title="http://www.microsoft.com/azure/windowsazure.mspx" href="http://www.microsoft.com/azure/windowsazure.mspx" rel="nofollow"&gt;http://www.microsoft.com/azure/windowsazure.mspx&lt;/a&gt;&lt;br /&gt;Microsoft, Azure Services Platform, &lt;a class="external free" title="http://msdn.microsoft.com/en-us/azure/default.aspx" href="http://msdn.microsoft.com/en-us/azure/default.aspx" rel="nofollow"&gt;http://msdn.microsoft.com/en-us/azure/default.aspx&lt;/a&gt;&lt;br /&gt;Microsoft, MSDN, &lt;a class="external free" title="http://msdn.microsoft.com/en-us/azure/cc994380.aspx" href="http://msdn.microsoft.com/en-us/azure/cc994380.aspx" rel="nofollow"&gt;http://msdn.microsoft.com/en-us/azure/cc994380.aspx&lt;/a&gt;&lt;br /&gt;Microsoft, Windows Azure Blog, &lt;a class="external free" title="http://blogs.msdn.com/windowsazure" href="http://blogs.msdn.com/windowsazure" rel="nofollow"&gt;http://blogs.msdn.com/windowsazure&lt;/a&gt;&lt;br /&gt;신현석, “WOA, 전문가기고,” IT Today, 2008.12.21&lt;br /&gt;신현석, “MS 클라우드 전략의 ‘코어’, 윈도우 애저,” 마이크로소프트웨어, 2009.01&lt;br /&gt;Retrieved from "&lt;a href="http://www.architecturejournal.org/wiki/Windows_Azure_Platform"&gt;http://www.architecturejournal.org/wiki/Windows_Azure_Platform&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;해당 글 출처 : &lt;a href="http://www.architecturejournal.org/wiki/Windows_Azure_Platform"&gt;http://www.architecturejournal.org/wiki/Windows_Azure_Platform&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-4796537728732117881?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/4796537728732117881/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/windows-azure-platform.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/4796537728732117881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/4796537728732117881'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/windows-azure-platform.html' title='Windows Azure Platform'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-6835663655536660535</id><published>2009-11-25T20:14:00.000-08:00</published><updated>2009-11-25T20:15:00.620-08:00</updated><title type='text'>VS 2010 다운로드</title><content type='html'>&lt;a href="http://www.microsoft.com/visualstudio/ko-kr/products/2010/default.mspx"&gt;http://www.microsoft.com/visualstudio/ko-kr/products/2010/default.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Azure 콘트롤 툴이 포함.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-6835663655536660535?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/6835663655536660535/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/vs-2010.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/6835663655536660535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/6835663655536660535'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/vs-2010.html' title='VS 2010 다운로드'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-1644420633160675910</id><published>2009-11-25T20:11:00.001-08:00</published><updated>2009-11-25T20:11:20.242-08:00</updated><title type='text'>마이크로소프트의 클라우드 컴퓨팅, Azure 가격 정책 공개</title><content type='html'>&lt;p&gt;마이크로소프트의 Public Cloud, Windows Azure와 Azure Services Platform의 가격정책이 WPC(Worldwide Partner Conference) 2009 행사에서 공개되었습니다. 아직은 Azure가 테스트 상태인 CTP(Community Technology Preview) 버전이기 때문에 무료로 사용하실 수 있습니다. 올해 11월에 예정된 PDC(Professional Developer Conference)에 맞춰 상용화 될 예정입니다.&lt;br /&gt;&lt;br /&gt;마이크로소프트의 클라우드 컴퓨팅은 크게 3가지 유형의 가격 정책으로 나뉘어져 있습니다.&lt;br /&gt;1. 사용한 만큼 비용 지불 (Consumption)   - Pay as you go 모델, 즉 클라우드 컴퓨팅의 가장 보편적인 방식&lt;br /&gt;2. 월별로 정해진 비용을 지불하는 방식 (Subscription)&lt;br /&gt;   - 1번 방식을 통하면 매월 지불하는 비용이 달라지므로, 지출에 대한 예측이 어렵습니다.      월정액 방식을 선호하는 고객이 선호하는 방식&lt;br /&gt;3. 볼륨 라이선스&lt;br /&gt;   - 엔터프라이즈 고객이 맺고 있는 EA(Enterprise Agreement) 방식으로 계약을 체결하는 방식&lt;br /&gt;&lt;br /&gt;2,3번에 대한 정확한 가격은 PDC2009에 맞춰 발표될 예정입니다. 이번에 발표된 가격 정책은 1번에 해당하는 내용입니다.&lt;br /&gt;&lt;br /&gt;CTP 기간 동안에는 아래와 같이 사용량에 제한이 있습니다.- Total compute usage: 2000 VM hours - Cloud storage capacity: 50GB - Total storage bandwidth: 20GB/day&lt;br /&gt;&lt;br /&gt;Windows Azure:&lt;br /&gt;Compute = $0.12 / hour&lt;br /&gt;Storage = $0.15 / GB stored / month Storage Transactions = $0.01 / 10K Bandwidth = $0.10 in / $0.15 out / GB&lt;br /&gt;&lt;br /&gt;산정방식&lt;br /&gt;     Compute: 애플리케이션이 Azure에 배포되어 있을 때의 시간을 계산함. 만약, 개발이나 테스트 중일&lt;br /&gt;경우에는 배포했던 것을 제거한 후 개별 로컬 머신 에서 개발 및 테스트하는 것이 유리함,&lt;br /&gt;     Storage: 30GB의 데이터를 Azure에 하루 동안 저장했다면 30일 기준으로 1GB로 비용 청구됨, 30일 내내 사용했다면 30GB로 비용 청구됨, 즉 30GB * $0.15 = $4.5스토리지 트랜잭션, 즉 신규, 수정, 읽기, 삭제 등의 트랜잭션도 별도로 빌링이 되는데 10,000건에 $0.01 입니다.&lt;br /&gt;     대역폭: 30일 동안 인터넷을 통해 애저로 유입되고 나가는 총 데이터를 기준으로 비용 정산됩니다.&lt;br /&gt;&lt;br /&gt;SQL Azure&lt;br /&gt;웹 Edition:&lt;br /&gt;T-SQL 기반의 관계형 데이터베이스 1GB까지&lt;br /&gt;Self-managed DB, 자동 고가용성, 백업 제공&lt;br /&gt;사용한 만큼 비용을 지불하고, 자동으로 확장됨&lt;br /&gt;웹 애플리케이션에 적합&lt;br /&gt;&lt;br /&gt;비즈니스 Edition:&lt;br /&gt;T-SQL 기반의 관계형 데이터베이스 10 GB까지&lt;br /&gt;Self-managed DB, 자동 고가용성, 백업 제공&lt;br /&gt;사용한 만큼 비용을 지불하고, 자동으로 확장됨&lt;br /&gt;자동 파티션, CLR 등의 기능은 추후에 추가 예정&lt;br /&gt;솔루션을 개발하는 ISV의 LOB 애플리케이션에 적합&lt;br /&gt;&lt;br /&gt;.NET Services:&lt;br /&gt;메시지 (Access Control, Orchestration, 메시지 큐): .NET Services를 사용하면 개발자들이 현재 운영중인 소프트웨어 자산이나 사용자가 클라우드 애플리케이션 및 데이터베이스에 쉽게 연결할 수 있습니다. 클라우드와 직접 운영 중인 On-premise와의 통신은 주로 메시지를 통해 이루어지게 됩니다. 사용한 만큼 비용을 지불하는 방식은 애플리케이션이 사용하는 메시지의 숫자를 기준으로 과금 하는 것을 의미합니다. 메시지는 서비스 버스의 메시지와 Access Control 토큰이라고 보시면 됩니다. 1달동안 10만개 기준으로 과금이 이루어 집니다. 예를들면,&lt;br /&gt; . 95,000개의 메시지를 사용했다면, 100,000개 기준으로 빌링 + 나가고 들어온 메시지 대역폭 비용&lt;br /&gt; . 150,000개의 메시지를 사용했다면 200,000개 기준으로 빌링 + 나가고 들어온 메시지 대역폭 비용&lt;br /&gt;&lt;br /&gt;자, 이제 가장 중요한 서비스 수준 협약 (SLA)에 대한 부분이 남았군요.&lt;br /&gt;&lt;br /&gt;Service Level Agreements (SLA)&lt;br /&gt;Windows Azure:&lt;br /&gt;Windows Azure는 Compute와 Storage를 위한 SLA가 별도로 존재합니다. Compute에 대해서는 2개 이상의 역할 인스턴스를 배포하고, Fault 및 Upgrade 도메인을 사용하는 경우 99.95%의 가동율을 보장합니다. 또한, 역할 인스턴스가 작동하지 않는 경우 적절한 조치를 취하기 위해 2분 이내에 탐지한 후 문제를 해결하기 위해 모니터링을 실시할 것 입니다. Storage 영역은 데이터의 추가, 수정, 조회, 삭제 요청이 제대로 동작하게 하기 위해 99.9%의 가동율을 보장합니다.&lt;br /&gt;&lt;br /&gt;SQL Azure:&lt;br /&gt;99.9%의 가동율을 보장 합니다.&lt;br /&gt;&lt;br /&gt;.NET Services:&lt;br /&gt;특성 상 On-premise와 클라우드 상의 엔드포인트가 많기 때문에 정확한 가동율 보장은 어렵지만, 기본적으로 Windows Azure가 제공하는 SLA를 기준으로 생각하시면 됩니다. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;출처:&lt;a href="http://blogs.msdn.com/eva/archive/2009/07/17/azure.aspx"&gt;http://blogs.msdn.com/eva/archive/2009/07/17/azure.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-1644420633160675910?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/1644420633160675910/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/azure.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/1644420633160675910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/1644420633160675910'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/azure.html' title='마이크로소프트의 클라우드 컴퓨팅, Azure 가격 정책 공개'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-7719241224718380234</id><published>2009-11-25T20:07:00.000-08:00</published><updated>2009-11-25T20:08:34.055-08:00</updated><title type='text'>MS Azure MySQL&amp;PHP</title><content type='html'>MS의 클라우드 서비스로 Azure 가 타 플랫폼 PHP, MySQL 을 지원한다.&lt;br /&gt;&lt;br /&gt;데모 영상으로 확인&lt;br /&gt;&lt;a href="http://microsoftpdc.com/Sessions/SVC51"&gt;http://microsoftpdc.com/Sessions/SVC51&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-7719241224718380234?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/7719241224718380234/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/ms-azure-mysql.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/7719241224718380234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/7719241224718380234'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/ms-azure-mysql.html' title='MS Azure MySQL&amp;PHP'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-532823906994847180</id><published>2009-11-19T20:26:00.001-08:00</published><updated>2009-11-25T21:53:31.449-08:00</updated><title type='text'>DB 복원 (접속자가 있는 상태에서)</title><content type='html'>---------------싱글 모드로 해서 복원 가능하게------------------&lt;br /&gt;alter database selfdb54 set single_user with rollback immediate&lt;br /&gt;&lt;br /&gt;---------------첫번째 풀백업 복원 Disk 위치 도 변경------------------&lt;br /&gt;RESTORE DATABASE selfdb54 FROM DISK = 'E:\DBBackup\selfdb54\selftdb54_db_20091117.dmp'WITH MOVE 'selfdb54_sys' To 'E:\SQLData\selfdb54\selfdb54_sys.mdf',MOVE 'selfdb54_data1' To 'E:\SQLData\selfdb54\selfdb54_data1.ndf',MOVE 'selfdb54_log' To 'E:\SQLData\selfdb54\selfdb54_log.ldf',FILE =1, &lt;span style="color:#ff0000;"&gt;NORECOVERY&lt;/span&gt; , REPLACE&lt;br /&gt;&lt;br /&gt;---------------두번째 증분백업 복원 변경------------------&lt;br /&gt;RESTORE DATABASE selfdb54 FROM DISK = 'E:\DBBackup\selfdb54\selfdb54_200911201132.dif'WITH &lt;span style="color:#ff0000;"&gt;RECOVERY&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;---------------이용자 접속 가능하게------------------&lt;br /&gt;alter database selfdb54 set multi_user with rollback immediate&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;범위 지정 복구 관련 옵션- StopAt : 복원 시점을 시간으로 지정&lt;/strong&gt;&lt;br /&gt;Restore Database DB이름 From Disk='경로\파일명.bak'StopAt = '2001-11-19 01:09' --2001년 11월 19일 1시 9분 데이터까지 복원&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;파일 리스트 확인&lt;/strong&gt;&lt;br /&gt;Restore FileListOnly from  Disk ='E:\ContentMaster_200911251720.dmp'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-532823906994847180?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/532823906994847180/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/db.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/532823906994847180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/532823906994847180'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/db.html' title='DB 복원 (접속자가 있는 상태에서)'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-9654437902727230</id><published>2009-11-19T20:25:00.000-08:00</published><updated>2009-11-19T20:26:03.891-08:00</updated><title type='text'>백업 기본 샘플</title><content type='html'>-- 1) 윈도우즈 탐색기에서 테스트를 위해 C:\Data 폴더 및 C:\Backup 폴더 생성   &lt;br /&gt;  &lt;br /&gt;-- 2) 여러 파일 그룹을 갖는 Sample 데이터베이스 만들기   &lt;br /&gt;USE Master   &lt;br /&gt;GO  &lt;br /&gt;CREATE DATABASE Sample   &lt;br /&gt;ON  PRIMARY (   &lt;br /&gt; NAME = 'Sample', FILENAME = 'C:\Data\Sample.mdf'),    &lt;br /&gt;FILEGROUP FG01(   &lt;br /&gt; NAME = 'Sample_01', FILENAME = 'C:\Data\Sample_01.ndf'),    &lt;br /&gt;FILEGROUP FG02(   &lt;br /&gt; NAME = 'Sample_02', FILENAME = 'C:\Data\Sample_02.ndf'),    &lt;br /&gt;FILEGROUP FG03(   &lt;br /&gt; NAME = 'Sample_03', FILENAME = 'C:\Data\Sample_03.ndf')   &lt;br /&gt;LOG ON (   &lt;br /&gt; NAME = 'Sample_log', FILENAME = 'C:\Data\Sample_log.ldf')   &lt;br /&gt;GO  &lt;br /&gt;  &lt;br /&gt;-- 3) 각각의 파일 그룹에 테이블 만들기   &lt;br /&gt;USE Sample   &lt;br /&gt;GO  &lt;br /&gt;CREATE TABLE T1 (   &lt;br /&gt; col1 int,   &lt;br /&gt; col2 int  &lt;br /&gt;) ON FG01   &lt;br /&gt;CREATE TABLE T2 (   &lt;br /&gt; col1 int,   &lt;br /&gt; col2 int  &lt;br /&gt;) ON FG02   &lt;br /&gt;CREATE TABLE T3 (   &lt;br /&gt; col1 int,   &lt;br /&gt; col2 int  &lt;br /&gt;) ON FG03   &lt;br /&gt;  &lt;br /&gt;-- 4) 전체 백업   &lt;br /&gt;BACKUP DATABASE Sample   &lt;br /&gt; TO DISK = 'C:\Backup\Sample_Full.bak'  &lt;br /&gt; WITH INIT -- 처음엔 생략 가능(반복 학습을 위해 포함시킴)   &lt;br /&gt;GO  &lt;br /&gt;  &lt;br /&gt;-- 5) 데이터 추가 #1   &lt;br /&gt;INSERT INTO T1 VALUES (1, 10)   &lt;br /&gt;INSERT INTO T2 VALUES (1, 10)   &lt;br /&gt;INSERT INTO T3 VALUES (1, 10)   &lt;br /&gt;GO  &lt;br /&gt;  &lt;br /&gt;-- 6) 트랜잭션 로그 백업   &lt;br /&gt;BACKUP LOG Sample   &lt;br /&gt; TO DISK = 'C:\Backup\Sample_Log.bak'  &lt;br /&gt; WITH INIT -- 처음엔 생략 가능   &lt;br /&gt;GO &lt;br /&gt;-- 7) 데이터 추가 #2   &lt;br /&gt;INSERT INTO T1 VALUES (2, 20)   &lt;br /&gt;INSERT INTO T2 VALUES (2, 20)   &lt;br /&gt;INSERT INTO T3 VALUES (2, 20)   &lt;br /&gt;GO &lt;br /&gt;-- 8) 서비스 종료 후 Sample_02 제거 후 재 시작   &lt;br /&gt;-- 9) Sample 데이터베이스 접근 시도시 에러 발생   &lt;br /&gt;-- 다음 에러는 세션이 끊어져 발생하는 것이므로 무시하고 다시 시도하면 됨   &lt;br /&gt;-- 메시지 233, 수준 20, 상태 0, 줄 0   &lt;br /&gt;-- 서버로 요청을 보내는 동안 전송 수준 오류가 발생했습니다.    &lt;br /&gt;-- (provider: 공유 메모리 공급자, error: 0 - 파이프의 다른 끝에 프로세스가 없습니다.)   &lt;br /&gt;USE Sample   &lt;br /&gt;GO  &lt;br /&gt;-- 메시지 945, 수준 14, 상태 2, 줄 1   &lt;br /&gt;-- 파일에 액세스할 수 없거나 메모리 또는 디스크 공간이 부족하여    &lt;br /&gt;-- 데이터베이스 'Sample'을(를) 열 수 없습니다.    &lt;br /&gt;-- 자세한 내용은 SQL Server 오류 로그를 참조하십시오.   &lt;br /&gt;  &lt;br /&gt;-- 10) Sample_02 파일 오프라인 시키기   &lt;br /&gt;-- 이렇게 한 후 서비스 재시작 하면 나머지 파일의 테이블은 사용가능 해짐   &lt;br /&gt;ALTER DATABASE Sample   &lt;br /&gt; MODIFY FILE (NAME = 'Sample_02', OFFLINE)   &lt;br /&gt;GO  &lt;br /&gt;  &lt;br /&gt;-- 11) 서비스 재시작     &lt;br /&gt;  &lt;br /&gt;-- 12) Sample 데이터베이스 접근 가능 확인   &lt;br /&gt;USE Sample   &lt;br /&gt;GO  &lt;br /&gt;SELECT * FROM T1 -- 정상   &lt;br /&gt;GO  &lt;br /&gt;SELECT * FROM T2 -- 에러   &lt;br /&gt;GO  &lt;br /&gt;SELECT * FROM T3 -- 정상   &lt;br /&gt;GO  &lt;br /&gt;  &lt;br /&gt;-- 13) T2 테이블이 포함된 Sample_02 파일 살리기   &lt;br /&gt;-- a) 로그 꼬리 백업   &lt;br /&gt;-- 데이터 추가#2 부분에서 추가된 데이터의 백업이 없으므로  필수적으로 로그 꼬리 백업 필요   &lt;br /&gt;USE Master   &lt;br /&gt;GO  &lt;br /&gt;BACKUP LOG Sample   &lt;br /&gt; TO DISK = 'C:\Backup\Sample_Tail_Log.bak'  &lt;br /&gt; WITH INIT -- 처음엔 생략 가능   &lt;br /&gt;GO  &lt;br /&gt;-- b) 전체 백업에서 파일 복원    &lt;br /&gt;RESTORE DATABASE Sample   &lt;br /&gt; FILE = 'Sample_02'  &lt;br /&gt; FROM DISK = 'C:\Backup\Sample_Full.bak'  &lt;br /&gt; WITH NORECOVERY -- 이어서 복원할 내용이 있으므로 NORECOVERY 옵션   &lt;br /&gt;GO  &lt;br /&gt;-- c) T1, T3 테이블은 여전히 사용 가능한 상태   &lt;br /&gt;USE Sample   &lt;br /&gt;GO  &lt;br /&gt;SELECT * FROM T1   &lt;br /&gt;SELECT * FROM T3   &lt;br /&gt;-- d) 데이터 추가도 가능   &lt;br /&gt;INSERT INTO T1 VALUES(3, 30)   &lt;br /&gt;INSERT INTO T3 VALUES(3, 30)   &lt;br /&gt;GO  &lt;br /&gt;-- e) 로그 복원   &lt;br /&gt;USE Master   &lt;br /&gt;GO  &lt;br /&gt;RESTORE LOG Sample   &lt;br /&gt; FROM DISK = 'C:\Backup\Sample_Log.bak'  &lt;br /&gt; WITH NORECOVERY -- 이어서 복원할 내용이 있으므로 NORECOVERY 옵션   &lt;br /&gt;GO  &lt;br /&gt;RESTORE LOG Sample   &lt;br /&gt; FROM DISK = 'C:\Backup\Sample_Tail_Log.bak'  &lt;br /&gt; WITH RECOVERY -- 마지막 복원 과정이므로 RECOVERY 옵션    &lt;br /&gt;GO  &lt;br /&gt;  &lt;br /&gt;-- 14) 복원 결과 최종 확인   &lt;br /&gt;USE Sample   &lt;br /&gt;GO  &lt;br /&gt;SELECT * FROM T1 -- 정상   &lt;br /&gt;GO  &lt;br /&gt;SELECT * FROM T2 -- 정상   &lt;br /&gt;GO  &lt;br /&gt;SELECT * FROM T3 -- 정상   &lt;br /&gt;GO  &lt;br /&gt;  &lt;br /&gt;-- 15) 정리   &lt;br /&gt;USE Master   &lt;br /&gt;GO  &lt;br /&gt;DROP DATABASE Sample   &lt;br /&gt;GO  &lt;br /&gt;-- 윈도우즈 탐색기에서 C:\Data 폴더 및 C:\Backup 폴더 삭제   &lt;br /&gt;  &lt;br /&gt;-- 16) 수고하셨습니다^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-9654437902727230?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/9654437902727230/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/blog-post_9179.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/9654437902727230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/9654437902727230'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/blog-post_9179.html' title='백업 기본 샘플'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-1186320237003768695</id><published>2009-11-19T18:26:00.001-08:00</published><updated>2009-11-19T18:26:19.797-08:00</updated><title type='text'>원격에서 터미널서비스 세션끊기</title><content type='html'>1. NETBIOS 연결.C:\&gt;net use &lt;a href="file://IP/"&gt;\\IP&lt;/a&gt; /u:administrator  엔터치면 명령을 잘 수행했습니다. 라고 떨오진다.&lt;br /&gt;2. 원격 서버의 연결된 터미널서비스 세션 확인C:\&gt;query session /server:IP&lt;br /&gt;3. 연결된 해당 세션 끊기C:\&gt;tsdiscon 2 /server:IP&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-1186320237003768695?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/1186320237003768695/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/blog-post_19.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/1186320237003768695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/1186320237003768695'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/blog-post_19.html' title='원격에서 터미널서비스 세션끊기'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-3881423793533120206</id><published>2009-11-18T21:19:00.001-08:00</published><updated>2009-11-19T20:28:53.137-08:00</updated><title type='text'>DB 계정 및 암호를 전송</title><content type='html'>SQL Server인스턴스 간에 로그인 및 암호를 전송하는 방법&lt;br /&gt;&lt;br /&gt;요약&lt;br /&gt;새 서버로 데이터베이스를 이동한 후 사용자가 새 서버에서 로그인하지 못할 수 있으며 다음과 같은 오류 메시지가 나타납니다.&lt;br /&gt;메시지 18456, 수준 16, 상태 1 '%ls' 사용자가 로그인하지 못했습니다.&lt;br /&gt;새 서버로 로그인과 암호를 전송해야 합니다. 이 문서에서는 새 서버로 로그인과 암호를 전송하는 방법을 설명합니다.&lt;br /&gt;&lt;br /&gt;SQL Server 7.0을 실행하는 서버 간에 로그인 및 암호를 전송하는 방법&lt;br /&gt;&lt;br /&gt;SQL Server 7.0 DTS(데이터 변환 서비스) 개체 전송 기능을 사용하면 두 서버 간에 로그인 및 사용자를 전송할 수 있지만 SQL Server의 인증된 로그인에 대한 암호는 전송할 수 없습니다. SQL Server 7.0을 실행하는 한 서버에서 SQL Server 7.0을 실행하는 다른 서버로 로그인과 암호를 전송하려면 "서로 다른 버전의 SQL Server 간에 로그인 및 암호를 전송하는 방법" 절에 나와 있는 단계를 수행하십시오.&lt;br /&gt;&lt;br /&gt;SQL Server 7.0에서 SQL Server 2000으로 또는 SQL Server 2000을 실행하는 서버 간에 로그인 및 암호를 전송하는 방법&lt;br /&gt;SQL Server 7.0 서버에서 SQL Server 2000 인스턴스로 또는 두 SQL Server 2000 인스턴스 간에 로그인과 암호를 전송하려면 SQL Server 2000에서 새로운 DTS 패키지 로그인 전송 작업을 사용하면 됩니다. 이렇게 하려면 다음과 같이 하십시오.&lt;br /&gt;1. SQL Server 2000 대상 서버에 연결하여 SQL SQL Server 엔터프라이즈 관리자에서 데이터 변환 서비스로 이동하고 폴더를 확장한 다음 로컬 패키지를 마우스 오른쪽 단추로 누르고 새 패키지를 누릅니다.&lt;br /&gt;2. DTS 패키지 디자이너가 열리면 작업 메뉴에서 로그인 전송 작업을 누릅니다. 원본, 대상 및 로그인 탭에 대한 정보를 적절하게 완성합니다. 중요 SQL Server 2000 대상 서버에서는 64비트 버전의 SQL Server 2000을 실행할 수 없습니다. 64비트 버전의 SQL Server 2000용 DTS 구성 요소를 사용할 수 없습니다. 다른 컴퓨터에 있는 SQL Server 인스턴스에서 로그인을 가져오는 경우 이 작업을 완료하려면 사용자 컴퓨터에 있는 SQL Server 인스턴스가 도메인 계정에서 실행되어야 합니다. 참고 DTS 방법을 사용하면 암호를 전송할 수 있지만 원본 SID는 전송할 수 없습니다. 로그인이 원본 SID를 사용하여 만들어지지 않은 경우 사용자 데이터베이스도 새 서버로 전송되면 데이터베이스 사용자가 로그인에서 분리됩니다. 원본 SID를 전송하고 분리된 사용자를 방지하려면 "서로 다른 버전의 SQL Server 간에 로그인 및 암호를 전송하는 방법" 절에 나와 있는 단계를 수행하십시오.&lt;br /&gt;SQL Server 2005 인스턴스 간에 로그인 및 암호를 전송하는 방법&lt;br /&gt;SQL Server 2005 인스턴스 간에 로그인 및 암호를 전송하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/918992/" target="_blank"&gt;918992&lt;/a&gt; (&lt;a href="http://support.microsoft.com/kb/918992/"&gt;http://support.microsoft.com/kb/918992/&lt;/a&gt;) SQL Server 2005 인스턴스 간에 로그인 및 암호를 전송하는 방법&lt;br /&gt;서로 다른 버전의 SQL Server 간에 로그인 및 암호를 전송하는 방법&lt;br /&gt;이 방법은 다음과 같은 경우에 적용됩니다. 참고 다음 단계에 대한 중요한 정보는 이 문서의 끝에 나오는 비고를 참조하십시오.서로 다른 버전의 SQL Server 간에 로그인 및 암호를 전송하려면 다음과 같이 하십시오.&lt;br /&gt;1.&lt;br /&gt;&lt;br /&gt;USE masterGOIF OBJECT_ID ('sp_hexadecimal') IS NOT NULL DROP PROCEDURE sp_hexadecimalGOCREATE PROCEDURE sp_hexadecimal @binvalue varbinary(256), @hexvalue varchar (514) OUTPUTASDECLARE @charvalue varchar (514)DECLARE @i intDECLARE @length intDECLARE @hexstring char(16)SELECT @charvalue = '0x'SELECT @i = 1SELECT @length = DATALENGTH (@binvalue)SELECT @hexstring = '0123456789ABCDEF'WHILE (@i &lt;= @length)BEGIN DECLARE @tempint int DECLARE @firstint int DECLARE @secondint int SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1)) SELECT @firstint = FLOOR(@tempint/16) SELECT @secondint = @tempint - (@firstint*16) SELECT @charvalue = @charvalue + SUBSTRING(@hexstring, @firstint+1, 1) + SUBSTRING(@hexstring, @secondint+1, 1) SELECT @i = @i + 1ENDSELECT @hexvalue = @charvalueGO IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL DROP PROCEDURE sp_help_revloginGOCREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL ASDECLARE @name sysnameDECLARE @type varchar (1)DECLARE @hasaccess intDECLARE @denylogin intDECLARE @is_disabled intDECLARE @PWD_varbinary varbinary (256)DECLARE @PWD_string varchar (514)DECLARE @SID_varbinary varbinary (85)DECLARE @SID_string varchar (514)DECLARE @tmpstr varchar (1024)DECLARE @is_policy_checked varchar (3)DECLARE @is_expiration_checked varchar (3)DECLARE @defaultdb sysname IF (@login_name IS NULL) DECLARE login_curs CURSOR FOR SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM sys.server_principals p LEFT JOIN sys.syslogins l ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name &lt;&gt; 'sa'ELSE DECLARE login_curs CURSOR FOR SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM sys.server_principals p LEFT JOIN sys.syslogins l ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_nameOPEN login_cursFETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denyloginIF (@@fetch_status = -1)BEGIN PRINT 'No login(s) found.' CLOSE login_curs DEALLOCATE login_curs RETURN -1ENDSET @tmpstr = '/* sp_help_revlogin script 'PRINT @tmpstrSET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'PRINT @tmpstrPRINT ''WHILE (@@fetch_status &lt;&gt; -1)BEGIN IF (@@fetch_status &lt;&gt; -2) BEGIN PRINT '' SET @tmpstr = '-- Login: ' + @name PRINT @tmpstr IF (@type IN ( 'G', 'U')) BEGIN -- NT authenticated account/group SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']' END ELSE BEGIN -- SQL Server authentication -- obtain password and sid SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) ) EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT -- obtain password policy state SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']' IF ( @is_policy_checked IS NOT NULL ) BEGIN SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked END IF ( @is_expiration_checked IS NOT NULL ) BEGIN SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked END END IF (@denylogin = 1) BEGIN -- login is denied access SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name ) END ELSE IF (@hasaccess = 0) BEGIN -- login exists but does not have access SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name ) END IF (@is_disabled = 1) BEGIN -- login is disabled SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE' END PRINT @tmpstr END FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin ENDCLOSE login_cursDEALLOCATE login_cursRETURN 0GO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.&lt;br /&gt;sp_help_revlogin 저장 프로시저를 만든 다음 원본 서버의 쿼리 분석기에서 sp_help_revlogin 프로시저를 실행합니다. sp_help_revlogin 저장 프로시저는 SQL Server 7.0과 SQL Server 2000에서 모두 사용할 수 있습니다. sp_help_revlogin 저장 프로시저의 출력은 원본 SID와 암호를 사용하여 로그인을 만드는 로그인 스크립트입니다. 출력을 저장한 다음 대상 SQL Server의 쿼리 분석기에 붙여 넣고 실행하십시오. 예를 들면 다음과 같습니다.EXEC master..sp_help_revlogin&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;참고) &lt;a href="http://support.microsoft.com/kb/918992/"&gt;http://support.microsoft.com/kb/918992/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-3881423793533120206?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/3881423793533120206/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/sql-server.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/3881423793533120206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/3881423793533120206'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/sql-server.html' title='DB 계정 및 암호를 전송'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-1164036693738060864</id><published>2009-11-17T22:55:00.001-08:00</published><updated>2009-11-17T22:55:49.322-08:00</updated><title type='text'>계정 매핑 스크립트</title><content type='html'>Use  db_name   (매핑하려는 DB 위치에서 )&lt;br /&gt;&lt;br /&gt;Exec Sp_change_users_login ‘Update_One’ , ’db_계정’ , ‘로그인 계정’&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;보통 db 계정 , 로그인 계정은 동일합니다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-1164036693738060864?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/1164036693738060864/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/1164036693738060864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/1164036693738060864'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/11/blog-post.html' title='계정 매핑 스크립트'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3197262865040432934.post-6220881759628133782</id><published>2009-01-09T01:52:00.001-08:00</published><updated>2009-11-18T21:04:09.885-08:00</updated><title type='text'>DB Full 백업 복원</title><content type='html'>--백업 파일 리스트 조회&lt;br /&gt;Restore FileListOnlyfrom from Disk ='E:\DBBackup\maildb54\selftdb54_db_20091117.dmp'&lt;br /&gt;&lt;br /&gt;--백업 파일 복원&lt;br /&gt;RESTORE DATABASE selftdb54&lt;br /&gt;FROM DISK = 'E:\DBBackup\selfdb54\selftdb54_db_20091117.dmp'WITH MOVE 'selfdb54_sys' To 'E:\SQLData\selfdb54\selfdb54_sys.mdf',MOVE 'selfdb54_data1' To 'E:\SQLData\selfdb54\selfdb54_data1.ndf',MOVE 'selfdb54_log' To 'E:\SQLData\selfdb54\selfdb54_log.ldf'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3197262865040432934-6220881759628133782?l=kimyongpil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kimyongpil.blogspot.com/feeds/6220881759628133782/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://kimyongpil.blogspot.com/2009/01/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/6220881759628133782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3197262865040432934/posts/default/6220881759628133782'/><link rel='alternate' type='text/html' href='http://kimyongpil.blogspot.com/2009/01/blog-post.html' title='DB Full 백업 복원'/><author><name>kimyongpil</name><uri>http://www.blogger.com/profile/06716452674840279372</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
