如何从架构创建表

时间:2013-02-13 02:09:48

标签: sql-server sql-server-2008 tsql

我的数据库中有一个名为tbRep的表

我在SQL Server数据库上有3个模式 X,Y,Z

现在X& Y有名为X.tbRep&的表。 Y.tbRep

然而,当我尝试使用CREATE To脚本时,例如X.tbRep并尝试为新模式Z创建一个,它会抛出一个错误,

  

Msg 2714,Level 16,State 6,Line 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

2 个答案:

答案 0 :(得分:0)

- 检查表格是否已经存在,如果没有添加您的创建脚本
如果不存在(从sys.tables中选择name ='tpRep'的名称)
BEGIN
- 表创建代码在这里 END

答案 1 :(得分:0)

您可以在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')