USE test GO --创建测试架构 CREATE SCHEMA [fcSCHEMA] AUTHORIZATION [dbo] GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'test' ,@level0type=N'SCHEMA', @level0name=N'fcSCHEMA' GO--创建一个测试架构下的表 CREATE TABLE fcSCHEMA.testTB(id INT) GO /* SELECT * FROM testTB 消息 208,级别 16,状态 1,第 1 行 对象名 'testTB' 无效。 */ GO SELECT * FROM fcSCHEMA.testTB /* (0 行受影响) */ GO --将testTB的架构更改为dbo ALTER SCHEMA dbo TRANSFER fcSCHEMA.testTB GO SELECT * FROM dbo.testTB GO DROP TABLE dbo.testTB GO DROP SCHEMA fcSCHEMA GO
sql2005里每个表都有架构的,只是通常情况下,建表不指定架构,会用默认架构dbo(当然,也看建表用户的一些属性) 所以通常,以为没有架构 ,实际上是有的,如果默认架构,只是省掉了。如下, USE test GO --创建测试架构 CREATE SCHEMA [fcSCHEMA] AUTHORIZATION [dbo] GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'test' ,@level0type=N'SCHEMA', @level0name=N'fcSCHEMA' GO--创建一个测试架构下的表 CREATE TABLE fcSCHEMA.testTB(id INT) GOSELECT * FROM testTB -- 这里省了就报错 /*消息 208,级别 16,状态 1,第 1 行 对象名 'testTB' 无效。 */ GO SELECT * FROM fcSCHEMA.testTB /* (0 行受影响) */ GO --将testTB的架构更改为dbo ALTER SCHEMA dbo TRANSFER fcSCHEMA.testTB GO SELECT * FROM dbo.testTB SELECT * FROM testTB --把架构名省了 GO DROP TABLE dbo.testTB GO DROP SCHEMA fcSCHEMA GO
db16320_tb
db16320tb
确认你那个是架构还是表名前辍,很简单:(1) 展开库,架构,看有没有你所谓的前辍。 如果有,则可能是架构
(2) 右击表,生成脚本,看生成的语句如果是 create table [a].[b] 这样,无疑是架构。
如果是 create table [a.b] 或者 create table 架构.[a.b] 那么 a无疑是前辍。
你先确定你的是架构还是前辍,再给你解决办法。
GO
--创建测试架构
CREATE SCHEMA [fcSCHEMA] AUTHORIZATION [dbo]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'test' ,@level0type=N'SCHEMA', @level0name=N'fcSCHEMA'
GO--创建一个测试架构下的表
CREATE TABLE fcSCHEMA.testTB(id INT)
GO
/*
SELECT * FROM testTB
消息 208,级别 16,状态 1,第 1 行
对象名 'testTB' 无效。
*/
GO
SELECT * FROM fcSCHEMA.testTB
/*
(0 行受影响)
*/
GO
--将testTB的架构更改为dbo
ALTER SCHEMA dbo TRANSFER fcSCHEMA.testTB
GO
SELECT * FROM dbo.testTB
GO
DROP TABLE dbo.testTB
GO
DROP SCHEMA fcSCHEMA
GO
所以通常,以为没有架构 ,实际上是有的,如果默认架构,只是省掉了。如下,
USE test
GO
--创建测试架构
CREATE SCHEMA [fcSCHEMA] AUTHORIZATION [dbo]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'test' ,@level0type=N'SCHEMA', @level0name=N'fcSCHEMA'
GO--创建一个测试架构下的表
CREATE TABLE fcSCHEMA.testTB(id INT)
GOSELECT * FROM testTB -- 这里省了就报错
/*消息 208,级别 16,状态 1,第 1 行
对象名 'testTB' 无效。
*/
GO
SELECT * FROM fcSCHEMA.testTB
/*
(0 行受影响)
*/
GO
--将testTB的架构更改为dbo
ALTER SCHEMA dbo TRANSFER fcSCHEMA.testTB
GO
SELECT * FROM dbo.testTB
SELECT * FROM testTB --把架构名省了
GO
DROP TABLE dbo.testTB
GO
DROP SCHEMA fcSCHEMA
GO