4

버전이 추적되어야하는 유사한 클라이언트에 대해 동일한 SQL Azure 데이터베이스가 여러 개 있습니다. 2014 년 11 월 SQL 애저는 내가 아는 한 확장 된 속성을 지원하지 않습니다, 여기에 이루어졌다로서 내가 버전의 이동을 추적하기위한 확장 된 특성을 가진 뭔가를 할 수있는 한 경우 :SQL Azure Friendly Database 버전 관리 아이디어

http://wateroxconsulting.com/archives/versioning-in-your-sql-database#

내가 적응의 생각

이 개념은 DDL 트리거를 만들어서 버전 주석을 저장하는 저장 프로 시저를 변경했습니다.

제 질문은 전략에 관한 것입니다. 저장 프로 시저가 이런 종류의 정보를 유지하는 가장 좋은 장소입니까, 아니면 SQL Azure 컨테이너에 텍스트 버전 정보를 저장할 더 좋은 곳입니까? 각 데이터베이스에 테이블을 추가하고 싶지는 않습니다. DB의 목적을 희석시키고 장난을위한 공간을 남겨두고 테이블 구조 등을 자체적으로 관리해야합니다.

그리고 내 follow- 질문에 대한 전술입니다 - TSQL에서 문자열 텍스트를 추가하여 주석 텍스트를 추가하는 절차를 완전히 바꾸는 가장 좋은 방법은 무엇입니까?

감사합니다.

+0

프로 시저 텍스트를 사용하여 데이터를 저장하려는 권한을 얻었습니까? 거기에 무엇을 저장 하시겠습니까? 수정 날짜? – usr

+0

@usr, 나는 YYYYMMDD-HHMM과 버전 번호와 40 자의 텍스트를 저장하려고 생각하고 있었다. – Snowy

답변

1

SQL 서버는 저장 프로 시저가 아니라 데이터를 저장하는 환상적인 도구이므로 일부 데이터를 저장 프로 시저에 저장하는 방법을 묻는 것처럼 보입니다.

내가 훨씬 더 나은 전략은 당신이

CREATE TABLE dbo.DatabaseVersion 
(
    Date datetime, 
    VersionNumber decimal(5,2), 
    Description narchar(40) 
); 

즉 귀하의 코멘트에 언급 된 정보를 저장하는 매우 간단한 테이블을 만들고 단순히 각 DDL 트리거에 해당 데이터베이스에 추가 행을 작성하는 것이다라고 말하고 싶지만

.

난 당신에 대해 가지고있는 이유는 매우 슬림하지만, 아마도 당신이 테이블의 목적은 명확하게하기 위해 단지

CREATE SCHEMA Metadata; 

즉,이 메타 데이터에 대한 데이터베이스 스키마를 생성하고 변경할 수 있다고 말한다하려는 " dbo. " 위의 DDL에서 "메타 데이터". 일부 사용 권한은 장난을 방지 할 수 있으며 테이블 구조를 신경 써야하는 경우 저장 프로 시저의 구조화되지 않은 주석보다 일급 데이터 테이블로 사용하는 것이 훨씬 낫습니다.

0

이것은 약간의 데이터를 모호한 방식으로 저장한다는 의미에서 "Create a global static variable in SQL Server?"과 매우 유사합니다.

나는 기능이 모두 정의에 짧은있을 거라고 생각 :

CREATE FUNCTION [dbo].[fn_GetVersion]() 
RETURNS NVARCHAR(100) 
BEGIN 
    RETURN N'YYYYMMDD-HHMM and a version number and 40 chars of text' 
END 

... 그리고 데이터 검색에 : 그것은 트리거 동적 DDL을 통해 업데이트 할 수 있습니다

Select [dbo].[fn_GetVersion](); 

그리고 :

Exec ('ALTER FUNCTION [dbo].[fn_GetVersion]() 
RETURNS NVARCHAR(100) 
BEGIN 
    RETURN N''YYYYMMDD-HHMM and version number and other 40 chars of text'' 
END')