以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]从Access迁移到SQL2005  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=27973)

--  作者:jspta
--  发布时间:2013/1/15 15:50:00
--  [求助]从Access迁移到SQL2005

从Access2003 迁移到SQL2005后,发现无法新增行,报错 列“_Locked”不允许空值。

后台打开后发现,是_Locked列允许为空没有勾选导致,

查看其它表,发现所有的逻辑列,都需要进行手动修改该参数,还好也就几十张表,手动下也就解决了

不知道大家怎么解决这个问题?如何进行迁移的?

 

[此贴子已经被作者于2013-1-15 15:53:59编辑过]

--  作者:lin_hailun
--  发布时间:2013/1/15 16:33:00
--  
 我特意测试了一次,重定向成功了,没有出错。

 我的操作步骤是:新建一个access数据库,然后,作为数据源,然后新增一张外部表,然后重定向到Sql数据库。一切正常。

--  作者:jspta
--  发布时间:2013/1/16 9:44:00
--  
以下是引用lin_hailun在2013-1-15 16:33:00的发言:
 我特意测试了一次,重定向成功了,没有出错。

 我的操作步骤是:新建一个access数据库,然后,作为数据源,然后新增一张外部表,然后重定向到Sql数据库。一切正常。

这样操作是没有问题的,我直接使用ACCESS自带的迁移到SQL会出现这个问题。

 

你这操作少量表可以,如果有几百张,大量的逻辑列,就不行了。还有这样做必须先将表加载到foxtable中,再重定向才行。


--  作者:lin_hailun
--  发布时间:2013/1/16 10:10:00
--  
 对于空值问题,你可以使用狐表编写sql语句,比如。

 for each dtname as string in co nnectio ns("xxx").getTableNames   \'得到所有的表名称
     cmd.commandText = "select top 1 * from " & dtname \'获得数据表
     dim dt as datatable = cmd.executeReader
     for each c as datacol in dt.datacols
         if c.IsBoolean then
             cmd.commandText = "alter table " & dtname & " alter column " & c.Name & " bit null" \'修改表结构
             cmd.executenonquery
         end if
     next
 next
[此贴子已经被作者于2013-1-16 10:11:30编辑过]