导出有表问题的数据库。不保持自动递增
Export database with tables issue. Not keeping auto increment
我正在使用 SSMS 将一些表从一台服务器上的数据库导出到另一台服务器上的不同数据库。
我正在使用 SQL 服务器导入和导出向导从旧服务器导出到新服务器。
它很好用,但它不保持自动增量。
有没有一种方法可以保持自动递增 或者是否有一个简单的 SQL 代码来告诉新数据库中的所有表 "id" 列应该是主键 & auto inc?
我无法导出 SQL 脚本,因为它们会变得太大。
谢谢。
使用数据库脚本。
在哪里可以找到高级脚本选项
到select生成脚本时的数据
我为这个问题创建了一个样本table
DDL
CREATE TABLE [dbo].[Brands](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](200) NOT NULL,
CONSTRAINT [PK_dbo.Merchants] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
DML SSMS 创建带有 Id 字段的数据脚本 For Ex.
GO
SET IDENTITY_INSERT [dbo].[Brands] ON
INSERT [dbo].[Brands] ([Id], [Name]) VALUES (1, N'Kitchenette')
INSERT [dbo].[Brands] ([Id], [Name]) VALUES (5, N'Mezzaluna')
INSERT [dbo].[Brands] ([Id], [Name]) VALUES (7, N'ESRA-MARKA')
SET IDENTITY_INSERT [dbo].[Brands] OFF
您需要像这样更改插入脚本
INSERT [dbo].[Brands] ([Name]) VALUES (N'Kitchenette')
INSERT [dbo].[Brands] ([Name]) VALUES (N'Mezzaluna')
INSERT [dbo].[Brands] ([Name]) VALUES (N'ESRA-MARKA')
所以我删除了Insert中的Id。如果您不提供 Id ,自动增量将起作用
这就是我如何能够成功复制我的 MSSQL 数据库,保留增量字段以及保留现有记录的身份。我使用的是 MSSQL Server Studio 2016,但旧版本的 Studio 应该类似。该过程将导入到目标数据库或从源数据库导出。右键单击数据库,然后选择任务,然后根据您喜欢的过程选择导入数据或导出数据。在前几个屏幕上选择您的源数据库和目标数据库。
在名为 "Source Tables and Views" 的下一个屏幕上,选择要复制的 table。对于每个包含增量字段的 table,您必须选择编辑映射。在“映射”屏幕上,选中 "Enable identity insert"。接下来,单击 "Edit SQL" 按钮。在 SQL 语句中查找每个增量字段。增量字段的类型为 "int" 和 "NOT NULL"。在 int 变量类型和 "NOT NULL" 规范之间插入 sql 语句 "IDENTITY(1,1)"。下面是一个 SQL 语句的示例,它有一个名为 [ID] 的增量字段:
CREATE TABLE [dbo].[SomeTableName] (
[ID] int IDENTITY(1,1) NOT NULL,
...more sql here
)
编辑完所有身份字段后,运行 导入或导出。
我正在使用 SSMS 将一些表从一台服务器上的数据库导出到另一台服务器上的不同数据库。
我正在使用 SQL 服务器导入和导出向导从旧服务器导出到新服务器。 它很好用,但它不保持自动增量。
有没有一种方法可以保持自动递增 或者是否有一个简单的 SQL 代码来告诉新数据库中的所有表 "id" 列应该是主键 & auto inc?
我无法导出 SQL 脚本,因为它们会变得太大。
谢谢。
使用数据库脚本。
在哪里可以找到高级脚本选项
到select生成脚本时的数据
我为这个问题创建了一个样本table
DDL
CREATE TABLE [dbo].[Brands](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](200) NOT NULL,
CONSTRAINT [PK_dbo.Merchants] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
DML SSMS 创建带有 Id 字段的数据脚本 For Ex.
GO
SET IDENTITY_INSERT [dbo].[Brands] ON
INSERT [dbo].[Brands] ([Id], [Name]) VALUES (1, N'Kitchenette')
INSERT [dbo].[Brands] ([Id], [Name]) VALUES (5, N'Mezzaluna')
INSERT [dbo].[Brands] ([Id], [Name]) VALUES (7, N'ESRA-MARKA')
SET IDENTITY_INSERT [dbo].[Brands] OFF
您需要像这样更改插入脚本
INSERT [dbo].[Brands] ([Name]) VALUES (N'Kitchenette')
INSERT [dbo].[Brands] ([Name]) VALUES (N'Mezzaluna')
INSERT [dbo].[Brands] ([Name]) VALUES (N'ESRA-MARKA')
所以我删除了Insert中的Id。如果您不提供 Id ,自动增量将起作用
这就是我如何能够成功复制我的 MSSQL 数据库,保留增量字段以及保留现有记录的身份。我使用的是 MSSQL Server Studio 2016,但旧版本的 Studio 应该类似。该过程将导入到目标数据库或从源数据库导出。右键单击数据库,然后选择任务,然后根据您喜欢的过程选择导入数据或导出数据。在前几个屏幕上选择您的源数据库和目标数据库。
在名为 "Source Tables and Views" 的下一个屏幕上,选择要复制的 table。对于每个包含增量字段的 table,您必须选择编辑映射。在“映射”屏幕上,选中 "Enable identity insert"。接下来,单击 "Edit SQL" 按钮。在 SQL 语句中查找每个增量字段。增量字段的类型为 "int" 和 "NOT NULL"。在 int 变量类型和 "NOT NULL" 规范之间插入 sql 语句 "IDENTITY(1,1)"。下面是一个 SQL 语句的示例,它有一个名为 [ID] 的增量字段:
CREATE TABLE [dbo].[SomeTableName] (
[ID] int IDENTITY(1,1) NOT NULL,
...more sql here
)
编辑完所有身份字段后,运行 导入或导出。