SQL Server 프로젝트 및 데이터베이스 개체의 특성
업데이트: 2008년 7월
특성은 각 Microsoft SQL Server 프로젝트와 프로젝트에 포함된 모든 데이터베이스 개체 파일에 적용되어야 합니다.
프로젝트 / 파일 |
적용해야 하는 특성 |
---|---|
프로젝트 |
SqlAssemblyAttribute |
집계 |
SqlUserDefinedAggregateAttribute |
저장 프로시저 |
SqlProcedureAttribute |
트리거 |
SqlTriggerAttribute |
사용자 정의 함수 |
SqlFunctionAttribute |
사용자 정의 형식 |
SqlUserDefinedTypeAttribute |
SqlAssembly 특성
이 특성은 Microsoft SQL Server 2005 데이터베이스에 배포된 모든 어셈블리에 적용되어야 합니다. 이 특성에는 매개 변수가 없습니다. SQL Server 프로젝트를 만들 때 AssemblyInfo 파일에 추가됩니다.
SqlUserDefinedAggregate 특성
이 특성은 집계 파일에 적용되어야 합니다. 이 특성에는 Format 및 MaxByteSize라는 두 개의 속성이 있습니다.
Format
필수적 요소. 집계의 저장소 형식입니다. 다음 형식이 지원됩니다.Native – SQL Server에서 디스크에 있는 효율적인 기본 표현을 사용하도록 지정합니다. 이 형식 옵션은 가장 간단하고 성능이 좋습니다. 이 형식에 대한 요구 사항은 다음과 같습니다.
StructLayout.LayoutKindSequential 특성은 집계에 적용되어야 합니다.
모든 집계 필드는 blittable이어야 합니다. 즉, 관리되는 메모리와 관리되지 않는 메모리에서 공통적인 표현을 사용하여 Interop 마샬러에서 특별히 처리할 필요가 없도록 해야 합니다.
집계에서 MaxByteSize 값을 지정하면 안 됩니다.
집계에 [NonSerialized] 필드가 있으면 안 됩니다.
필드가 명시적 레이아웃으로 표시되면 안 됩니다.
UserDefined - 사용자가 이진 형식에 대해 모든 권한을 갖도록 지정합니다. 이 형식에 대한 요구 사항은 다음과 같습니다.
집계에서 IBinarySerialize를 구현해야 합니다.
집계에서 MaxByteSize 값을 지정해야 합니다.
MaxByteSize
이 집계의 인스턴스에 대한 최대 크기(바이트)입니다. Format이 UserDefined로 설정된 경우에만 필요합니다. Format이 Native로 설정된 경우에는 지정하지 않아야 합니다.
이 예제에서는 집계의 Format을 Native로 지정합니다.
<SqlUserDefinedAggregate(Format.Native)> _
Public Class SampleAggregate
'...
End Class
[SqlUserDefinedAggregate(Format.Native)]
public class SampleAggregate
{
//...
}
SqlProcedure 특성
이 특성은 저장 프로시저 파일에 적용되어야 합니다. 이 특성에는 다음과 같은 매개 변수가 있습니다.
- Name - 선택적 요소. SQL Server에서 저장 프로시저를 참조할 때 사용할 이름을 지정합니다.
이 예제에서는 sp_sqlName이라는 이름을 사용하여 저장 프로시저를 참조하도록 지정합니다.
Partial Public Class StoredProcedures
<SqlProcedure(Name:="sp_sqlName")> _
Public Shared Sub SampleProcedure(ByVal s As SqlString)
'...
End Sub
End Class
public partial class StoredProcedures
{
[SqlProcedure(Name="sp_sqlName")]
public static void SampleProcedure(SqlString s)
{
//...
}
}
SqlTrigger 특성
이 특성은 트리거 파일에 적용되어야 합니다. 이 특성에는 다음과 같은 매개 변수가 있습니다.
Name - 선택적 요소. SQL Server에서 트리거를 참조할 때 사용할 이름을 지정합니다.
Target - 필수적 요소. 트리거를 적용할 테이블을 지정합니다.
Event - 필수적 요소. 트리거를 활성화하는 동작을 지정합니다.
이 예제에서는 authors 테이블의 기존 데이터가 업데이트될 경우(UPDATE) 트리거가 활성화되도록 지정합니다.
Partial Public Class Triggers
<SqlTrigger(Target:="authors", Event:="FOR UPDATE")> _
Public Shared Sub AuthorsUpdateTrigger()
'...
End Sub
End Class
public partial class Triggers
{
[SqlTrigger(Target="authors", Event="FOR UPDATE")]
public static void AuthorsUpdateTrigger()
{
//...
}
}
이 예제에서는 trig_onpubinsert라는 이름을 사용하여 트리거를 참조하도록 지정합니다. publishers 테이블에 새 데이터가 추가될 경우(INSERT) 트리거가 활성화됩니다.
Partial Public Class Triggers
<SqlTrigger(Name:="trig_onpubinsert", Target:="publishers", Event:="FOR INSERT")> _
Public Shared Sub PublishersInsertTrigger()
'...
End Sub
End Class
public partial class Triggers
{
[SqlTrigger(Name="trig_onpubinsert", Target="publishers", Event="FOR INSERT")]
public static void PublishersInsertTrigger()
{
//...
}
}
SqlFunction 특성
이 특성은 스칼라 값이나 테이블을 반환하는 사용자 정의 함수 파일에 적용되어야 합니다. 이 특성에는 다음과 같은 매개 변수가 있습니다.
Name - 선택적 요소. SQL Server에서 사용자 정의 함수를 참조할 때 사용할 이름을 지정합니다.
참고: 테이블 값을 반환하는 함수의 경우 반환된 테이블 정의의 SQL 표현이 포함된 TableDefinition 속성 값을 지정해야 합니다.
이 예제에서는 sp_scalarFunc라는 이름을 사용하여 사용자 정의 함수를 참조하도록 지정합니다.
Partial Public Class UserDefinedFunctions
<SqlFunction(Name:="sp_scalarFunc")> _
Public Shared Function SampleScalarFunction(ByVal s As SqlString) As SqlString
'...
Return ""
End Function
End Class
public partial class UserDefinedFunctions
{
[SqlFunction(Name="sp_scalarFunc")]
public static SqlString SampleScalarFunction(SqlString s)
{
//...
return "";
}
}
이 예제에서는 sp_tableFunc라는 이름을 사용하여 사용자 정의 함수를 참조하도록 지정합니다. TableDefinition 속성 값은 letter nchar(1)입니다.
Partial Public Class UserDefinedFunctions
<SqlFunction(Name:="sp_tableFunc", TableDefinition:="letter nchar(1)")> _
Public Shared Function SampleTableFunction(ByVal s As SqlString) As IEnumerable
'...
Return New Char(2) {"a"c, "b"c, "c"c}
End Function
End Class
public partial class UserDefinedFunctions
{
[SqlFunction(Name="sp_tableFunc", TableDefinition="letter nchar(1)")]
public static IEnumerable SampleTableFunction(SqlString s)
{
//...
return new ArrayList(new char[3] {'a', 'b', 'c'});
}
}
SqlUserDefinedType 특성
이 특성은 사용자 정의 형식 파일에 적용되어야 합니다. 이 특성에는 Format, MaxByteSize, IsFixedLength 및 IsByteOrdered라는 네 개의 속성이 있습니다.
Format
필수적 요소. 사용자 정의 형식의 저장소 형식입니다. 다음 형식이 지원됩니다.Native – SQL Server에서 디스크에 있는 효율적인 기본 표현을 사용하도록 지정합니다. 이 옵션은 가장 간단하면서 최상의 성능을 제공합니다. 이 형식에 대한 요구 사항은 다음과 같습니다.
StructLayout.LayoutKindSequential 특성은 형식에 적용되어야 합니다.
모든 사용자 정의 형식 필드는 blittable이어야 합니다. 즉, 관리되는 메모리와 관리되지 않는 메모리에서 공통적인 표현을 사용하여 Interop 마샬러에서 특별히 처리할 필요가 없도록 해야 합니다.
형식에서 MaxByteSize 값을 지정하면 안 됩니다.
형식에 [NonSerialized] 필드가 있으면 안 됩니다.
필드가 명시적 레이아웃으로 표시되면 안 됩니다.
UserDefined - 사용자가 이진 형식에 대해 모든 권한을 갖도록 지정합니다. 이 형식에 대한 요구 사항은 다음과 같습니다.
형식에서 IBinarySerialize를 구현해야 합니다.
형식에서 MaxByteSize 값을 지정해야 합니다.
MaxByteSize
필수적 요소. 이 형식의 인스턴스에 대한 최대 크기(바이트)입니다.IsFixedLength
선택적 요소. 모든 형식 인스턴스의 길이가 같은지 여부를 지정합니다. 기본값은 false입니다.IsByteOrdered
선택적 요소. 이 형식의 이진 표현에 순서가 있는지, 즉 이 형식의 인스턴스를 비교하는 데 이진 표현을 사용할 수 있는지 여부를 지정합니다. 기본값은 false입니다.
이 예제에서는 사용자 정의 형식의 Format과 MaxByteSize를 각각 SerializedDataWithMetadata와 8000바이트로 지정합니다.
<SqlUserDefinedType(Format.Native, MaxByteSize:=8000)> _
Public Class SampleType
'...
End Class
[SqlUserDefinedType(Format.Native, MaxByteSize=8000)]
public class SampleType
{
//...
}
참고 항목
작업
방법: CLR SQL Server 저장 프로시저 만들기 및 실행
방법: CLR SQL Server 트리거 만들기 및 실행
방법: CLR SQL Server 집계 만들기 및 실행
방법: CLR SQL Server 사용자 정의 함수 만들기 및 실행
방법: CLR SQL Server 사용자 정의 형식 만들기 및 실행
개념
관리 코드를 사용하여 데이터베이스 개체를 만드는 경우의 이점
참조
SQL Server 프로젝트 및 데이터베이스 개체의 특성
기타 리소스
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2008년 7월 |
SQLUserDefinedAggregate 특성의 MaxByteSize 특성에 대한 정보가 업데이트되었습니다. |
콘텐츠 버그 수정 |