제2의 비엔지니어 인생관을 꿈꾸며

Posted
Filed under Study

OLE DB provider "SQLNCLI10" for linked server "XXXXXX" returned message "The stored procedure required to complete this operation could not be found on the server. Please contact your system administrator
 


master database:


create procedure sp_tables_info_rowset_64


@table_name sysname,


@table_schema     sysname = null,


@table_type nvarchar(255) = null


as


declare @Result int set @Result = 0


exec @Result = sp_tables_info_rowset @table_name, @table_schema, @table_type




MSSQL2008 서버에서 MSSQL2000서버로 링크드 서버 접속이 위 에러가 발생합니다. 위와같이 저장프로시져를 만들어줘야 하는 이슈가 있고 만들어진 프로시져에 권한을 넣어줘야 합니다.
MS에 문의해 본결과 2008버젼이여서 문제가 된게 아니고 64비트에서 32비트로 접속을 할려는데 문제가 발생하는거라고 합니다.
http://support.microsoft.com/?id=906954

2010/05/19 16:35 2010/05/19 16:35
Posted
Filed under Study

MSSQL2000에서 2005로 그리고 2008로 업그레이드, 마이그레이션을 하는 경우가 많이 생기는거 같습니다. 필자도 SQL2000에서 2008로 데이터를 통합시키는데 많은 고민과 강사의 강의로 인한 공부도 많이 했습니다. 업그레이드를 하면 안되는게 많기 때문에 못한다?라는 편견은 일단 버리고 어플리케이션의 수정 보완작업이 시간이 걸리고 많이 힘들다고 판단이 된다면 호환성모드를 올리지 말고 그대로 80모드로 유지를 하는 방법도 있습니다. MSSQL2008만의 특별기능을 사용하지만 못할뿐이지 운영상에는 전혀 지장을 주지 않습니다. 먼저 포스팅에서는 DTS패키지 문제는 SSIS패키지로 마이그레이션하고 수정보완작업을 해야하는 번거로움이 있지만 MSSQL2008의 성능과 안정성 및 관리에서는 참 좋다라는 결론을 내려봅니다. 필자는 DBA가 아니여도 시스팀 엔지니어가 MSSQL2008을 관리 운영할수 있게 잘 나왔다는 생각을 간간히 했습니다. 위 PDF 문서에 나온것처럼 쿼리문 수정작업이 필요합니다. 기존 MSSQL2005버젼에서 2008버젼으로 올리는 경우는 이런 호환성 문제가 없어서 바로 올려도 문제 없다는 MS강사의 말을 들었습니다. 2000에서 2005나 2008로 올리는게 주 이슈 문제가 있지만 2005에서나 2008에서는 특별히 없다는것입니다.
일단 Action Plan은 기존 80모드에서 테스트를 거치고 90이나 100모드로 올리는 과정을 거쳐야 합니다. 아니면 DB Name을 다르게 해서 하나는 80모드 하나는 100모드로 둘다 같이 운영해보는것도 좋은 방법입니다.
그러나 대부분의 업무 담당자들은 잘되는거 좋게 한다고 바꿀려고는 안합니다. 잘못되면 책임부터 온갖 뒷치닥 거리의 일은 다 해야되는 경우도 생길수 있어서입니다. DBMS 업그레이드는 신중해야 하는것도 맞지만 일부 요령만 갖고 있으면 어렵지 않게 무난한 작업을 마칠수 있다라는 결론을 내려봅니다.
2010/05/12 14:51 2010/05/12 14:51
Posted
Filed under Study

1. 복구 모델을 SIMPLE로 변경 후 DBCC SHRINKFILE을 수행 
 
2. BACKUP LOG <dbname> TO DISK = 'NUL' 을 실행 후 DBCC SHRINKFILE을 수행
 
3. 로그 백업을 받고 DBCC SHRINKFILE을 수행

USE [master]
GO
ALTER DATABASE [dbname] SET RECOVERY SIMPLE WITH NO_WAIT
GO

USE dbname
DBCC SHRINKFILE(dbname_Log,100)

USE [master]
GO
ALTER DATABASE [dbname] SET RECOVERY FULL WITH NO_WAIT
GO


MSSQL2008에서는 로그 정리하는 구문이 바뀌거나 없어졌습니다. SQL사이트에서 위 3가지 방법을 제시해주더군요. 전 1번만 알고 있었는데 단순모드로 변경 안해주더라도 작업을 실행할수 있는 방법이 있었다는걸 알게되었습니다.




트랙잭션로그정리(2005 버젼까지만 TRUNCATE_ONLY가 된다)

------------------------------------------------------------------  
USE Master  
GO  
BACKUP LOG DATABASE WITH TRUNCATE_ONLY  
------------------------------------------------------------------  
USE DATABASE  
DBCC SHRINKFILE(DBNAME_Log,100)  
------------------------------------------------------------------

2010/04/14 09:01 2010/04/14 09:01
Posted
Filed under Study

최신OS Windows2008 R2 버젼과 MSSQL2008 버젼에서의 설치문제는 여러가지 이슈가 있었습니다. 일단 R2버젼에서 SQL2008 클러스터 설치부터가 안됩니다. MS가 버그로 인정했고 그에대한 대책이 서비스팩1을 통합시켜 패킹시켜 설치를 하는 방법을 지시하였습니다.
윈도우XP에 클라이언트 접속툴도 설치에서 에러가 나기도 합니다.
그래서 결국 MSSQL2008은 무조건 SP1으로 통합시켜서 설치를 해야만 별 희안한 에러를 보지 않습니다.SP2가 나오면 SP2로 패킹시키면 더 좋겠지만 이에 방법은

1.

Copy the original SQL Server 2008 source media to c:\SQLServer2008_FullSP1 .

2.

Download the Service Pack 1 package. The package names are as follows:

SQLServer2008SP1-KB968369-IA64-ENU.exe

SQLServer2008SP1-KB968369-x64-ENU.exe

SQLServer2008SP1-KB968369-x86-ENU.exe

3.

Extract the packages as follows:

SQLServer2008SP1-KB968369-IA64-ENU.exe /x:c:\SQLServer2008_FullSP1\PCU

SQLServer2008SP1-KB968369-x64-ENU.exe /x:c:\SQLServer2008_FullSP1\PCU

SQLServer2008SP1-KB968369-x86-ENU.exe /x:c:\SQLServer2008_FullSP1\PCU

Note Make sure that you complete this step for all architectures to ensure the original media is updated correctly.

4.

Run the following commands to copy the Setup.exe file and the Setup.rll file from the extracted location to the original source media location.
robocopy C:\SQLServer2008_FullSP1\PCU c:\SQLServer2008_FullSP1 Setup.exe
robocopy C:\SQLServer2008_FullSP1\PCU c:\SQLServer2008_FullSP1 Setup.rll 

5.

Run the following commands to copy all files (not the folders), except the Microsoft.SQL.Chainer.PackageData.dll file, in C:\SQLServer2008_FullSP1\PCU\ Architecture to C:\SQLServer2008_FullSP1 \ Architecture to update the original files.
robocopy C:\SQLServer2008_FullSP1\pcu\x86 C:\SQLServer2008_FullSP1\x86 /XF Microsoft.SQL.Chainer.PackageData.dll
robocopy C:\SQLServer2008_FullSP1\pcu\x64 C:\SQLServer2008_FullSP1\x64 /XF Microsoft.SQL.Chainer.PackageData.dll
robocopy C:\SQLServer2008_FullSP1\pcu\ia64 C:\SQLServer2008_FullSP1\ia64 /XF Microsoft.SQL.Chainer.PackageData.dll

Note If you accidentally copy the Microsoft.SQL.Chainer.PackageData.dll file, you may receive the following error message when you run the Setup.exe file.


SQL Server Setup has encountered the following error:
The specified action LandingPage is not supported for the SQL Server patchingg operation.
Error code 0x84BF0007



If this issue occurs, restore the Microsoft.SQL.Chainer.PackageData.dll file back to the original version.

6.

Determine if you have the Defaultsetup.ini file in the following folders:

C:\SQLServer2008_FullSP1\x86

C:\SQLServer2008_FullSP1\x64

C:\SQLServer2008_FullSP1\ia64

If you have the Defaultsetup.ini file in the folders, open the Defaultsetup.ini file, and then add PCUSOURCE=".\PCU" to the file as follows:

;SQLSERVER2008 Configuration File [SQLSERVER2008] ... PCUSOURCE=".\PCU"

If you do not have the Defaultsetup.ini file in the folders, create the Defaultsetup.ini file in the folders, and add the following content to the file:

;SQLSERVER2008 Configuration File [SQLSERVER2008] PCUSOURCE=".\PCU"

Note This file tells the Setup program where to locate the SP1 source media that you extracted in step 3.

7.

Start the Setup program.

MS기술지원 받을때 전달받은 지침서입니다. SP1으로 패킹시킨후로 아직까지 에러는 구경하지 못했습니다.

두번째로 여러사람들이 참 많이도 고생하는 통신포트 오픈 문제입니다. TCP 1433 포트만을 기억하는 사용자들은 UDP사용의 존재 유무를 모르고 있는게 대부분입니다. 필자는 MS엔지니에게 수차례 확인을 거쳤슴에도 불구하고 UDP는 오픈을 하지 않아도 된다라고 확답을 얻었지만 UDP 1434를 열어주지 않으면 DB서버에 접속을 할수 없었습니다. 왜그럴까?라는 의문을 계속 하던 찰나에 앗~!? 하며 생각난건 인스턴스 네임이 존재할경우입니다. 어떤건 TCP1433만 열었는데도 잘되고 어떤건 안되고 하는걸 참 희안하다 생각하는데 인스턴스네임을 찾아가야 하는거라면 UDP를 사용하겠구나라는 생각을 해봤습니다. 즉 이제까지 기본인스턴스로 사용해봤지 멀티인스턴스로 나가면서 네임을 붙여서 해보진 않았기 때문이였습니다. 우리가 흔히 사용하는 넷바이오스 네임을 사용할때 UDP를 열어줘야 하듯 SQL도 마찬가지로 네임을 사용해야 한다면 UDP를 사용해야 하겠지?라는 필자만의 판단입니다. 이게 아니라면 아니겠지만 확실하다고는 말을 못하겠습니다. 그냥 추측일뿐이지...(이런데 아는척 했다간 개망신 ㅋㅋㅋ)

MSSQL2005부터 SSIS 패키지라는게 있습니다. DTS 로컬패키지를 업그레이드 한거라 생각을 합니다만 기존에 DTS를 계속 사용해도 됩니다. 하지만 64비트 2008운영체제에 SQL2008이라면 예전 DTS는 실행이 되되 수정을 하기가 곤란합니다. 편법으로 dll수정과 여러가지 방법을 제공하곤 있지만 그냥 포기하고 SSIS로 마이그레이션 하고 거기서 약간 수정해서 사용하는것이 정신건강상 이롭습니다.
SQL에 대해서 많이 몰랐던 필자가 DTS란거까지 접하면서 결국 예전 방식은 그냥 포기하고 SSIS로 전환하는것이 SQL2008에대한 예의?ㅋㅋ 라고 봅니다. 예전거 고수해봐야 머리 아플거 뻔합니다.

2009/12/08 23:41 2009/12/08 23:41