我正在使用SSMS将一些表从一台服务器上的数据库导出到另一台服务器上的另一台数据库。
我正在使用SQL Server导入和导出向导从旧导出向新导出。 它运行良好,但不保持自动增量。
有没有办法用它来保存自动增量,或者是否有一个简单的SQL代码告诉新数据库中的所有表,列“id”应该是主键&汽车公司?
我无法导出SQL脚本,因为它们会变得太大。
谢谢。
答案 0 :(得分:2)
使用数据库脚本。
在何处查找高级脚本选项
在生成脚本时选择数据
答案 1 :(得分:1)
我为这个问题创建了一个示例表
<强> 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字段为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,Auto Increament会起作用
答案 2 :(得分:0)
这就是我能够成功复制MSSQL数据库保留增量字段以及保留现有记录的身份的方法。我使用的是MSSQL Server Studio 2016,但旧版本的Studio应该是类似的。该过程将作为目标数据库的导入或从源数据库导出。右键单击数据库,然后选择“任务”,然后根据您喜欢的进程选择“导入数据”或“导出数据”。在前几个屏幕上选择您的源和目标数据库。
在下一个名为&#34; Source Tables and Views&#34;屏幕,选择要复制的表格。对于包含增量字段的每个表,您必须选择“编辑映射”。在Mappings屏幕上,选中&#34;启用身份插入&#34;。接下来,单击&#34;编辑SQL&#34;按钮。在SQL语句中查找每个增量字段。增量字段是&#34; int&#34;并且&#34; NOT NULL&#34;。插入sql语句&#34; IDENTITY(1,1)&#34;在int变量类型和&#34; NOT NULL&#34;之间规格。以下是具有名为[ID]的增量字段的SQL语句示例:
CREATE TABLE [dbo].[SomeTableName] (
[ID] int IDENTITY(1,1) NOT NULL,
...more sql here
)
编辑完所有标识字段后,运行导入或导出。