如何从架构创建一个表
问题描述:
我有一个名为tbRep在我的数据库如何从架构创建一个表
我对SQL Server数据库 X,Y 3架构表,Z
现在X & Y的表称为X.tbRep & Y.tbRep
但是,当我尝试使用CREATE TO脚本从例如X.tbRep并尝试创建一个新的模式Z,它抛出一个错误的说法,
消息2714,级别16,状态6,2号线 已经有一个在数据库中名为“tbRep”对象。
我在这做错了什么?
我敢肯定,有Z.tbRep不存在
创建脚本
USE [Info]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [Z].[tbRep](
[ReplicaGroup] [varchar](50) NOT NULL,
[RunFrequencyUnit] [char](1) NOT NULL,
[Enabled] [bit] NOT NULL,
[LastRun] [datetime] NOT NULL,
[RunFrequency] [int] NOT NULL,
[ReplicationWindowType] [char](1) NOT NULL,
[ReplicationWindowSize] [tinyint] NOT NULL,
CONSTRAINT [PK_tbReplicaGroups] PRIMARY KEY CLUSTERED
(
[ReplicaGroup] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [Z].[tbReplicaGroups] ADD CONSTRAINT [DF_tbReplicaGroups_ReplicationWindowType] DEFAULT ('D') FOR [ReplicationWindowType]
GO
ALTER TABLE [Z].[tbReplicaGroups] ADD CONSTRAINT [DF_tbReplicaGroups_ReplicationWindowSize] DEFAULT ((1)) FOR [ReplicationWindowSize]
GO
答
--Checks,看看表已经不存在,如果不添加您的创建脚本
如果不存在(从sys.tables中选择名称,其中name ='tpRep')
BEGIN
- 表创建代码这里
END
答
你可以在CREATE TABLE语句之前执行它并让我们知道你是否得到了任何东西?
select *
from sys.all_objects
where sys.all_objects.name = 'tbRep' and
sys.all_objects.type = 'U' and
sys.all_objects.schema_id = (select schema_id from sys.schemas where sys.schemas.name = 'Z')
您可以显示您的实际创建语句吗?你是否验证了模式“Z”还没有这样的表?如果右键单击'X.tbRep'并且说'Script To>'需要将'[X]'更改为'[Z]'。 – 2013-02-13 02:12:20
你是否确定没有'Z.tbRep'?失败的尝试可能会留下这样的表格。 – 2013-02-13 02:13:22
没有Z.tbRep。我也发布了代码 – user280868 2013-02-13 02:22:54