sql-server - 将本地数据库迁移到 sql azure 数据库时,它会忽略所有表创建脚本中的 DEFAULT (newid())

标签 sql-server database azure uniqueidentifier azure-sql-database

我已使用 SQLAzureMW v5.16 for sql server 2014 将本地数据库迁移到 sql azure 数据库。在迁移之前,它为我提供了可以在我的 SQL Azure 数据库中执行的脚本。它在表创建脚本中包含 newid() ,如下所示:

CREATE TABLE [dbo].[AUDITLOG](
[CUSTOMERID] [decimal](38, 0) NULL,
[RRNVALUE] [varchar](12) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[TRANSACTIONCODE] [varchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ACTIONID] [varchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[MODULEID] [varchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[CNIC] [varchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ACTIVITYDATE] [varchar](8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ACTIVITYTIME] [varchar](6) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ACTIVITYDETAILS] [varchar](4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[RESPONSECODE] [varchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[SESSIONID] [varchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[BASECUSTOMERID] [decimal](38, 0) NULL,
[SOURCE] [varchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[LOGID] [decimal](38, 0) NULL,
[AGENT] [varchar](4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[RESERVEDFIELD1] [varchar](4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[RESERVEDFIELD2] [varchar](4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[RESERVEDFIELD3] [varchar](4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[RESERVEDFIELD4] [varchar](4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[USERIP] [varchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[LOGGINGNATURE] [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[LOGINID] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ROWID] [uniqueidentifier] NOT NULL DEFAULT (newid())

)

GO
CREATE UNIQUE CLUSTERED INDEX [ROWID$INDEX] ON [dbo].[AUDITLOG]
(
    [ROWID] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF)
GO

成功迁移后,可以看到约束 DEFAULT (newid()) 在所有表创建脚本中均被删除。并产生以下内容:

CREATE TABLE [dbo].[AUDITLOG](
[CUSTOMERID] [decimal](38, 0) NULL,
[RRNVALUE] [varchar](12) NULL,
[TRANSACTIONCODE] [varchar](10) NULL,
[ACTIONID] [varchar](15) NULL,
[MODULEID] [varchar](20) NULL,
[CNIC] [varchar](15) NULL,
[ACTIVITYDATE] [varchar](8) NULL,
[ACTIVITYTIME] [varchar](6) NULL,
[ACTIVITYDETAILS] [varchar](4000) NULL,
[RESPONSECODE] [varchar](10) NULL,
[SESSIONID] [varchar](30) NULL,
[BASECUSTOMERID] [decimal](38, 0) NULL,
[SOURCE] [varchar](10) NULL,
[LOGID] [decimal](38, 0) NULL,
[AGENT] [varchar](4000) NULL,
[RESERVEDFIELD1] [varchar](4000) NULL,
[RESERVEDFIELD2] [varchar](4000) NULL,
[RESERVEDFIELD3] [varchar](4000) NULL,
[RESERVEDFIELD4] [varchar](4000) NULL,
[USERIP] [varchar](15) NULL,
[LOGGINGNATURE] [varchar](100) NULL,
[LOGINID] [varchar](50) NULL,
[ROWID] [uniqueidentifier] NOT NULL

)

开始

将表从本地迁移到 Azure 云时删除 newid() 是否有原因? ..

最佳答案

我认为默认的 newid() 在 sql azure 中不可用,但它在 azure sql 数据仓库中可用

请检查msdn链接

https://msdn.microsoft.com/en-us/library/ms190348.aspx

关于sql-server - 将本地数据库迁移到 sql azure 数据库时,它会忽略所有表创建脚本中的 DEFAULT (newid()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39244406/

相关文章:

c# - 插入语句组合逻辑

sql-server - 如何更新触发器中插入的字段

mysql - InnoDB 与 MyISAM 插入查询时间

silverlight - Silverlight 的 Azure 存储(REST?)

Azure BLOB 存储虚拟请求

sql-server - 如何在SQL Server 2008中创建 "No Duplicates"列?

python - 在 Ubuntu 14.04 上使用 Python 连接到 Microsoft Azure SQL 数据库

mysql - 如何通过命令提示符对我的所有 mysql 表数据进行 des_加密?

java - 详细 Rexster 输出/记录错误 `null`

azure - azure 网站中的空 ssl 证书列表