플레인 ADO를 사용하여 SQL Server에서 뷰 정의를 가져오는 방법이 있습니까?
ADO Connection을 사용하여 SQL 서버에서 호스트되는 데이터베이스에서 열 정의를 추출하는 중입니다.OpenSchema()
이러한 테이블을 다른 SQL 데이터베이스에 프로그래밍 방식으로 다시 만들 수 있도록 다양한 기능을 호출합니다.지금까지는 좋아.
위의 표와의 주요 상호작용은 여러 뷰를 사용하여 이루어집니다.OpenSchema()
는 테이블의 열 정의를 반환하는 것과 같은 방법으로 뷰의 열 정의를 반환할 수 있습니다.중요한 비트의 정보가 누락되어 있습니다.즉, 뷰의 열이 기본 테이블의 어느 테이블과 컬럼에 매핑되는지입니다.
ADOX 카탈로그 보기를 사용하여 보기를 만드는 데 사용된 SQL 명령에 액세스하려고 했지만, 사용 중인 SQL Server용 OLEDB 드라이버가 이 기능을 지원하지 않는 것 같습니다.
"Column X maps to Column Y in table Z" 또는 뷰 작성에 사용되는 실제 SQL 명령 형식으로 ADO를 통해 뷰 구성에 대한 이 정보를 얻을 수 있는 방법이 있습니까?
SQL Server 버전
SQL Server 2005 이후에서는 다음과 같은 뷰를 작성하는 데 사용되는 SQL 스크립트를 얻을 수 있습니다.
select definition
from sys.objects o
join sys.sql_modules m on m.object_id = o.object_id
where o.object_id = object_id( 'dbo.MyView')
and o.type = 'V'
뷰 작성/변경에 사용되는 스크립트를 포함하는 단일 행을 반환합니다.
표의 다른 열에는 보기를 컴파일할 때 사용 중인 옵션에 대한 정보가 표시됩니다.
주의사항
뷰가 ALTER VIEW를 사용하여 마지막으로 변경된 경우 스크립트는 CREATE VIEW 문이 아닌 ALTER VIEW 문이 됩니다.
스크립트에는 작성 시 이름이 반영됩니다.ALTER VIEW를 실행하거나 CREATE VIEW를 사용하여 보기를 삭제 및 재생성하는 경우에만 업데이트됩니다.뷰의 이름이 변경된 경우(예:
sp_rename
) 또는 소유권이 다른 스키마에 이전된 경우 원래 CREATE/ALTER VIEW 문이 반환됩니다.이 스크립트는 오브젝트의 현재 이름을 반영하지 않습니다.일부 도구는 출력을 잘라냅니다.예를 들어 MS-SQL 명령줄 도구 sqlcmd가 있습니다.exe는 데이터를 255자로 잘라냅니다.매개 변수를 전달할 수 있습니다.
-y N
결과를 얻다N
discloss(캐릭터)
Microsoft 에서는, 다음의 방법으로 View 정의를 취득했습니다.http://technet.microsoft.com/en-us/library/ms175067.aspx
USE AdventureWorks2012;
GO
SELECT definition, uses_ansi_nulls, uses_quoted_identifier, is_schema_bound
FROM sys.sql_modules
WHERE object_id = OBJECT_ID('HumanResources.vEmployee');
GO
USE AdventureWorks2012;
GO
SELECT OBJECT_DEFINITION (OBJECT_ID('HumanResources.vEmployee'))
AS ObjectDefinition;
GO
EXEC sp_helptext 'HumanResources.vEmployee';
SQL 2000 사용자에게 이 정보를 제공하는 실제 명령어는 다음과 같습니다.
select c.text
from sysobjects o
join syscomments c on c.id = o.id
where o.name = '<view_name_here>'
and o.type = 'V'
SELECT object_definition (OBJECT_ID(N'dbo.vEmployee'))
아래 쿼리를 통해 테이블/뷰 세부 정보를 얻을 수 있습니다.
테이블:sp_help table_nameFor View:sp_help view_name
SELECT definition, uses_ansi_nulls, uses_quoted_identifier, is_schema_bound
FROM sys.sql_modules
WHERE object_id = OBJECT_ID('your View Name');
다음 예시는 다음과 같습니다.뷰 컬렉션, 명령어텍스트 속성 예제(VB) ADOX를 사용하여 VIEW와 관련된 COMMAND를 변경하여 VIEWS를 유지하는 방법을 보여줍니다.대신 다음과 같이 사용합니다.
Set cmd = cat.Views("AllCustomers").Command
' Update the CommandText of the command.
cmd.CommandText = _
"Select CustomerId, CompanyName, ContactName From Customers"
다음과 같은 방법으로 사용해 보십시오.
Set CommandText = cat.Views("AllCustomers").Command.CommandText
언급URL : https://stackoverflow.com/questions/4765323/is-there-a-way-to-retrieve-the-view-definition-from-a-sql-server-using-plain-ado
'programing' 카테고리의 다른 글
Qt 5.1.1: 플랫폼 플러그인 "windows"가 없어 응용 프로그램을 시작하지 못했습니다. (0) | 2023.04.20 |
---|---|
TPM(Trusted Platform Module)을 사용하여 바이트를 암호화하는 방법 (0) | 2023.04.20 |
WPF 창이나 Windows 양식에 삽입할 수 있는 코드 에디터 아는 사람? (0) | 2023.04.20 |
SQL Server Management Studio 대체 기능으로 테이블 참조/편집 및 쿼리 실행 가능 (0) | 2023.04.20 |
PowerShell 루프에서 현재 항목의 인덱스 가져오기 (0) | 2023.04.20 |