2017-11-30 8 views
1

배경 : 우리 데이터베이스는 원래 공유 서버의 타사 호스팅 회사에서 호스팅하고있었습니다. 데이터베이스 다이어그램을 만들 수있는 권한이 없었기 때문에 빠른 솔루션은 .\sqlexpress에 다이어그램을 작성하는 것이 었습니다. 이제 우리 데이터베이스는 전용 서버에 있으므로 다이어그램을 만들 수있는 권한이 있습니다 (유일한 이유는 아닙니다).다른 서버에서 데이터베이스 다이어그램을 성공적으로 마이그레이션/복사하는 방법

이제 다이어그램을 다시 만들지 않고도 내 sqlexpress에서 새 서버로 마이그레이션하고 싶습니다. 그래서 this question 나는 SELECT * FROM localdb.dbo.sysdiagrams 다이어그램을 찾은 다음 모든 값을 복사하여 붙여 넣어 INSERT INTO newdb.dbo.sysdiagrams VALUES (diagramValuesHere)을 수행했습니다. 이것은 내가이 메시지를 보러 갈 때를 제외하고 다이어그램을 만들었습니다.

docfile이 손상되었습니다. (MS 비주얼 데이터베이스 도구)

Error Image

내가 그 생각할 수있는 유일한 방법은 문제를 일으키는 것은 SQL Server 버전이 다른 것입니다.

SQLEXPRESS - 마이크로 소프트 SQL 서버 2012 (SP3-GDR) (KB4019092) - 11.0.6251.0 (X64) 2017년 7월 7일 7시 14분 24초 저작권 (c) Microsoft의 익스프레스 에디션 (64 비트)에 Windows NT 6.3 (빌드 15063 :)

. .

NEWSERVER - 마이크로 소프트 SQL 서버 2014 (SP2-CU7) (KB4032541) - 12.0.5556.0 (X64) 2017년 8월 17일 12시 7분 38초 저작권 (c) Microsoft의 웹 버전 (64 비트)에 윈도우 NT 6.3 ( 9600 빌드 :)도 아마 MSSQL의 인스턴스간에 호환되지 않도록 한편

답변

0

, Microsoft는, 하나의 MSSQL의 버전과 이전과의 호환성을 제공합니다. 한편

, 그들은 다음 버전으로 다이어그램을 업그레이드 할 수있는 기능을 제공합니다 https://technet.microsoft.com/en-us/library/ms190628(v=sql.110).aspx

는, 기존의 데이터베이스 다이어그램 개체 탐색기에서

  • 업그레이드 데이터베이스를 확장합니다.
  • 데이터베이스 아래의 데이터베이스 다이어그램 노드를 확장하십시오.
  • 데이터베이스 다이어그램을 설정하려면 예를 선택하십시오.
  • 이렇게하면 데이터베이스에 저장된 다이어그램이 업그레이드됩니다.
+0

다이어그램은 다운 그레이드해야하지 않을까요? 2014 년에 제작되어 2012 년에 보려고 했으므로 – WhatsThePoint

+0

어쨌든 다이어그램을 다운 그레이드 할 수 있을지 의심 스럽습니다. "NEWSERVER"(새 서버라고 가정)에서 SQL Server 2014를 사용했습니다. 또한 다이어그램을 가지고있는 Express 서버 또한 2012 인스턴스였습니다. –

+0

개봉 된 각각의 버전이 서로 다릅니다. – WhatsThePoint

0

새로운 데이터베이스 다이어그램을 사용 : 새 데이터베이스 클릭에서

을 "데이터베이스 다이어그램"폴더에. SQL Server Management Studio는 다이어그램을 표시 할 것인지 묻는 메시지를 표시합니다. 이 단계를 마치면 데이터베이스에 sysdiagrams 테이블이 생깁니다.

그런 다음 실행 다음

IF EXISTS (SELECT name FROM sys.objects WHERE object_id = OBJECT_ID(N'sysdiagrams') AND type in (N'U',N'PC')) 
    DROP TABLE sysdiagrams 
GO 


CREATE TABLE [dbo].[sysdiagrams](
    [name] [sysname] NOT NULL, 
    [principal_id] [int] NOT NULL, 
    [diagram_id] [int] IDENTITY(1,1) NOT NULL, 
    [version] [int] NULL, 
    [definition] [varbinary](max) NULL, 
PRIMARY KEY CLUSTERED 
(
    [diagram_id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], 
CONSTRAINT [UK_principal_name] UNIQUE NONCLUSTERED 
(
    [principal_id] ASC, 
    [name] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 
GO 

EXEC sys.sp_addextendedproperty @name=N'microsoft_database_tools_support', @value=1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'sysdiagrams' 
GO 


SELECT name, principal_id,[version], [definition] 
     FROM olddb.dbo.sysdiagrams -- OLD Server Database Diagram 

INSERT INTO newdb.dbo.sysdiagrams 
    SELECT name, principal_id,[version], [definition] 
+0

다른 연결에 있습니다. – WhatsThePoint

+0

OLD Server 데이터베이스 SELECT name, principal_id, [version], [definition] FROM olddb.dbo.sysdiagrams.And 출력을 INSERT합니다. 데이터로 새 서버 DB –

+0

내가했고, 당신은 그래서 당신은 그것을 삽입해야하지 그런 경우 테이블 dbo.sysdiagrams를 사용할 수 있는지 여부를 확인 새로운 Server.if ON 오류를 가지고 오류 – WhatsThePoint