我用sql server导出了创建数据库以及添加约束及关系的脚本,本打算写一个通过读取该脚本创建access的数据表的程序。
结果发现有好多语句用oledbcommand执行起来会出错。不知道是不是有规范上的问题?我只是摸索了一下,发现
CREATE TABLE [ErpRightUser] (
[Obj_id] varchar (50) NOT NULL ,
[Obj_Type] varchar (1) NOT NULL ,
[Module_id] varchar (50) NOT NULL ,
[Value] int NOT NULL
)
这条语句中的varchar是不能有中括号的,如果带了中括号则会出现字段定义错误。是不是有这方面的要求?
而如下:
ALTER TABLE [ErpRightUser] WITH NOCHECK ADD
CONSTRAINT [DF_ErpRightUser_Obj_Type] DEFAULT ('U') FOR [Obj_Type],
CONSTRAINT [IX_ErpRightUser] UNIQUE CLUSTERED
(
[Obj_id],
[Obj_Type],
[Module_id]
)
我就不知道为何不能被执行了,说是语法错误。
请问这两种数据库在创建表时的sql语句都有哪些不同呢?
谢谢。
结果发现有好多语句用oledbcommand执行起来会出错。不知道是不是有规范上的问题?我只是摸索了一下,发现
CREATE TABLE [ErpRightUser] (
[Obj_id] varchar (50) NOT NULL ,
[Obj_Type] varchar (1) NOT NULL ,
[Module_id] varchar (50) NOT NULL ,
[Value] int NOT NULL
)
这条语句中的varchar是不能有中括号的,如果带了中括号则会出现字段定义错误。是不是有这方面的要求?
而如下:
ALTER TABLE [ErpRightUser] WITH NOCHECK ADD
CONSTRAINT [DF_ErpRightUser_Obj_Type] DEFAULT ('U') FOR [Obj_Type],
CONSTRAINT [IX_ErpRightUser] UNIQUE CLUSTERED
(
[Obj_id],
[Obj_Type],
[Module_id]
)
我就不知道为何不能被执行了,说是语法错误。
请问这两种数据库在创建表时的sql语句都有哪些不同呢?
谢谢。
"dbo."得去掉。每个创建表的语句最后的" on primary"也要去掉。这个好理解,因为access里是没有这些的。而字段类型sql server导出的脚本时代中括号的,而创建access表用oledbCommand执行就会通不过,试了多次才知道原来是这个字段类型带了中括号所致。这些倒是解决了,可是发现定义约束的那些语句执行不过去了,也不知道是什么原因,该如何解决?谢谢。
你可以用把sql server 导出 到 access
也可以实现你想要的结构复制