테이블 정의를 표시하기 위한 T-SQL 쿼리?
SQL Server 테이블에 대한 인덱스 및 키를 포함한 전체 정의를 표시하는 쿼리란 무엇입니까?저는 순수한 질문을 원합니다. SQL Studio에서 이 질문을 받을 수 있지만, 저는 종종 가장 기본적인 앱만 있는 "와일드" 컴퓨터에 있으며 스튜디오를 설치할 권한이 없습니다.하지만 SQLCMD는 항상 옵션입니다.
업데이트: sp_help를 시도해 보았지만 Name, Owner, Type 및 Created_Datetime이 표시된 레코드 하나만 생성됩니다.sp_help에 빠진 다른 것이 있습니까?
제가 부르는 것은 다음과 같습니다.
sp_help 공항
테이블을 정의하는 DDL이 필요합니다.
DDL을 반품하는 쉬운 방법은 없습니다.그러나 정보 스키마 보기 및 시스템 보기에서 대부분의 세부 정보를 얻을 수 있습니다.
SELECT ORDINAL_POSITION, COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Customers'
SELECT CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
WHERE TABLE_NAME = 'Customers'
SELECT name, type_desc, is_unique, is_primary_key
FROM sys.indexes
WHERE [object_id] = OBJECT_ID('dbo.Customers')
sp_help 해봤어요?
sp_help 'TableName'
http://www.stormrage.com/SQLStuff/sp_GetDDL_Latest.txt 을 방문하세요.
당신은 다음코드찾수다있니의 수 입니다.sp_getddl
SQL Server에 대한 프로시저입니다.이 절차의 목적은 테이블, 임시 테이블 또는 개체를 스크립팅하는 것입니다.
용도:
exec sp_GetDDL GMACT
또는
exec sp_GetDDL 'bob.example'
또는
exec sp_GetDDL '[schemaname].[tablename]'
또는
exec sp_GetDDL #temp
SQL Server 2012에서 테스트해 본 결과 매우 효과적이었습니다.
저는 그 과정의 저자가 아닙니다.개선 사항이 있으면 로웰 이자기레(scripts@stormrage.com )로 보내 주십시오.
내가 생각할 수 있는 가장 쉽고 빠른 방법은 sp_help를 사용하는 것입니다.
sp_help 'TableName'
이 작은 Windows 명령줄 앱을 사용하여 다음과 같은 기능을 사용할 수 있습니다.CREATE TABLE
모든 테이블에 대한 스크립트(제약 조건 포함).C#으로 작성했습니다.그냥 컴파일해서 메모리 스틱에 들고 다니기만 하면 됩니다.아마도 누군가 파워셸에 이식할 수 있을 것입니다.
using System;
using System.Linq;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
namespace ViewSource
{
public class ViewSource
{
public static void Main(string[] args)
{
if (args.Length != 6)
{
Console.Error.WriteLine("Syntax: ViewSource.exe <server>" +
" <user> <password> <database> <schema> <table>");
}
Script(args[0], args[1], args[2], args[3], args[4], args[5]);
}
private static void Script(string server, string user,
string password, string database, string schema, string table)
{
new Server(new ServerConnection(server, user, password))
.Databases[database]
.Tables[table, schema]
.Script(new ScriptingOptions { SchemaQualify = true,
DriAll = true })
.Cast<string>()
.Select(s => s + "\n" + "GO")
.ToList()
.ForEach(Console.WriteLine);
}
}
}
SQL 2012 이후 다음 문을 실행할 수 있습니다.
Exec sp_describe_first_result_set @tsql= N'Select * from <yourtable>'
복합 선택 문(결합, 하위 선택 등)을 입력하면 결과 집합의 정의가 제공됩니다.새 테이블(또는 임시 테이블)을 만들어야 하고 모든 필드 정의를 수동으로 확인하지 않으려는 경우 이 기능이 매우 유용합니다.
sp_help 'YourTableName'
테이블에 정의된 열, 데이터 유형 및 인덱스를 반환합니다.
--List all tables in DB
select * from sysobjects where xtype = 'U'
--Table Definition
sp_help TableName
테이블에 정의된 트리거를 반환합니다.
--Triggers in SQL Table
select * from sys.triggers where parent_id = object_id(N'SQLTableName')
오래된 질문인 건 알지만, 정확히 제가 찾고 있던 것입니다.몇 개의 테이블을 일괄 스크립팅하기 위해 Anthony Faull의 C# 코드를 PowerShell용으로 다시 작성했습니다.
이것은 통합 보안을 사용하는 것입니다.
Import-Module sqlps
$serverInstance = "<server>"
$database = "<database>"
$table = "<table>"
$schema = "<schema>"
$options = New-Object -TypeName Microsoft.SqlServer.Management.Smo.ScriptingOptions
$options.DriAll = $true
$options.SchemaQualify = $true
$connection = New-Object -TypeName Microsoft.SqlServer.Management.Common.ServerConnection `
-ArgumentList $serverInstance
$server = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server `
-ArgumentList $connection
$server.Databases.Item($database).Tables.Item($table, $schema).Script($options) `
| ForEach-Object -Process { $_ + "`nGO"}
다음은 사용자 이름과 암호입니다.
Import-Module sqlps
$serverInstance = "<server>"
$user = "<user>"
$password = "<pasword>"
$database = "<database>"
$table = "<table>"
$schema = "<schema>"
$options = New-Object -TypeName Microsoft.SqlServer.Management.Smo.ScriptingOptions
$options.DriAll = $true
$options.SchemaQualify = $true
$connection = New-Object -TypeName Microsoft.SqlServer.Management.Common.ServerConnection `
-ArgumentList $serverInstance
$connection.LoginSecure = $false
$connection.Login = $user
$connection.Password = $password
$server = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server `
-ArgumentList $connection
$server.Databases.Item($database).Tables.Item($table, $schema).Script($options) `
| ForEach-Object -Process { $_ + "`nGO"}
테이블 이름을 입력하고 선택한 후 ATL + F1을 누릅니다.
테이블 이름을 다음과 같이 입력합니다.Customer
그런 다음 새 쿼리 창을 열고 테이블 이름을 입력하고 선택한 다음 Alt + F1을 누릅니다.
테이블의 전체 정의가 표시됩니다.
LINQPad를 사용하는 사용자에 대한 @Anthony Faull의 답변 변형:
new Server(new ServerConnection(this.Connection.DataSource))
.Databases[this.Connection.Database]
.Tables["<table>", "dbo"]
?.Script(new ScriptingOptions {
SchemaQualify = true,
DriAll = true,
})
두 개의 어셈블리를 참조해야 합니다.
- 마이크로소프트.SqlServer.ConnectionInfo.dll
- 마이크로소프트.SqlServer.Smo.dll
Anthony의 스니펫에 언급된 네임스페이스 참조를 추가합니다.
SELECT ORDINAL_POSITION, COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'EMPLOYEES'
sp_help 저장 프로시저를 사용해 보십시오.
sp_help <>
또 다른 방법은 sp_columns 프로시저를 실행하는 것입니다.
EXEC sys.sp_columns @TABLE_NAME = 'YourTableName'
배리의 대답에 덧붙여.sp_help를 사용하여 특정 데이터베이스의 모든 개체를 반복할 수도 있습니다.또한 저장 프로시저와 같은 프로그램 요소를 스크립트로 작성하는 무기용 sp_help 텍스트도 있습니다.
일반 테이블 정의는 저장 프로시저를 사용하여 표시됩니다.sp_help
앞서 말한 바와 같이:
sp_help 'table_name_in_current_db_db'
여러 컨텍스트의 테이블을 사용하는 경우 위의 명령어를 원하는 컨텍스트로 접두사로 지정하는 것이 유용합니다.use db_xyz
:
DB_Products..sp_help 'MyTable' -- DB_Products의 MyTable을 정의합니다.
또한 다음과 같은 임시 테이블에서도 작동합니다.
tempdb..sp_help '#TempTable' - 현재 컨텍스트에서 #TempTable을 정의합니다.
데이터베이스 개체에 대한 DDL 스크립트를 쉽게 가져올 수 있는 방법이 있습니다.
- SQL Server Management Studio 열기
- 원본 데이터베이스 서버에 연결합니다.
- 데이터베이스 트리를 확장합니다.
- 내보낼 테이블이 있는 데이터베이스를 마우스 오른쪽 단추로 클릭합니다.
- 하위 메뉴에서 "태스크"를 확장합니다.
- 하위 메뉴에서 "스크립트 생성..."을 선택합니다.."
- 마법사를 사용하여 내보낼 개체를 선택합니다.
- 스크립팅 옵션의 경우 개체당 하나의 스크립트를 선택합니다.
선택한 모든 테이블, 보기, 저장된 프로시저, 사용자, 역할 또는 스키마에 대한 파일을 내보냅니다.그것을 목적지 컴퓨터로 가져가세요.
언급URL : https://stackoverflow.com/questions/6215459/t-sql-query-to-show-table-definition
'sourcecode' 카테고리의 다른 글
SQL Server 데이터베이스의 모든 스키마 목록을 가져오려면 어떻게 합니까? (0) | 2023.06.28 |
---|---|
스프링 부트 연속 빌드로 실행 (0) | 2023.06.28 |
UI 레이블 layer.cornerRadius가 iOS 7.1에서 작동하지 않음 (0) | 2023.06.28 |
오류: 기본 재배치로 풀링할 수 없습니다.단계별 변경사항이 있습니다. (0) | 2023.06.28 |
깃 풀 대 깃 베이스 (0) | 2023.06.28 |