我用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语句都有哪些不同呢?
谢谢。

解决方案 »

  1.   

    不是这意思,我的意思是为何sql server导出的脚本用oleDbCommand执行会不顺利。前面创建表的就有例如
    "dbo."得去掉。每个创建表的语句最后的" on primary"也要去掉。这个好理解,因为access里是没有这些的。而字段类型sql server导出的脚本时代中括号的,而创建access表用oledbCommand执行就会通不过,试了多次才知道原来是这个字段类型带了中括号所致。这些倒是解决了,可是发现定义约束的那些语句执行不过去了,也不知道是什么原因,该如何解决?谢谢。
      

  2.   

    是不是用alter语句创建主键、约束索引什么的对于access不可以啊?
      

  3.   

    望回答一下,是不是access不能使用alter语句阿?
      

  4.   

    建议你去“数据库开发”的Access模块去问问吧。~
      

  5.   

    sql server和access的一些关键字是不一样的。
    你可以用把sql server 导出 到 access 
    也可以实现你想要的结构复制