Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 升级对SQL UK与美国日期格式的访问_Sql Server_Upsizing - Fatal编程技术网

Sql server 升级对SQL UK与美国日期格式的访问

Sql server 升级对SQL UK与美国日期格式的访问,sql-server,upsizing,Sql Server,Upsizing,我正在尝试从Access 2010升级到SQL Server 2008。除了一张桌子,所有的东西都在工作;表是在SQL Server中创建的,但没有数据被放大。原因是,其中一列包含一个日期,该日期存储在Access中,为英国格式(如2013年12月31日)。我知道这是真的,因为a)导出到文本文件时,该日期列也会失败,错误消息明确表示这是因为“日期超出范围”,但更重要的是,b)如果我从Access中删除该列,并进行升迁,数据会升迁。因此,毫无疑问,问题实际上是日期列 是的,我知道SSMA(SQL

我正在尝试从Access 2010升级到SQL Server 2008。除了一张桌子,所有的东西都在工作;表是在SQL Server中创建的,但没有数据被放大。原因是,其中一列包含一个日期,该日期存储在Access中,为英国格式(如2013年12月31日)。我知道这是真的,因为a)导出到文本文件时,该日期列也会失败,错误消息明确表示这是因为“日期超出范围”,但更重要的是,b)如果我从Access中删除该列,并进行升迁,数据会升迁。因此,毫无疑问,问题实际上是日期列

是的,我知道SSMA(SQL Server Migration Assistant),它似乎是因为升迁向导的缺点而发展起来的。SSMA似乎不是我的选择。我在一台64位Windows7机器上,当我试图沿着这条路走下去时,我陷入了一个无休止的循环“你没有正确版本的SSMA/Access”等等;“您需要安装64位版本的Office”等;这不是一个选择

令人恼火的是,升迁向导无法处理英国日期,但事实似乎就是这样。所以我想找出一个解决办法。我不是访问专家。我想到的想法包括:

  • 将表导出到以制表符分隔的文本文件,然后使用SSI进行迁移,并执行派生列转换以获取数据

  • 在Access中的表上创建计算字段,将数据放入新列,然后删除原始列。(但是,同样令人恼火的是,这也不起作用;当我跟着说“Access显示expression builder”时,那么…Access不显示expression builder


感谢大家的建议。我想出了一个难看的手动破解。毫无疑问,VBA专家会知道很多更优雅的编程解决方案,但我现在有更重要的事情要做,只有一个日期栏给我带来了问题。但我确实学到了一些关于访问的知识。我将分享这个破解不管它值多少钱,我都会去

  • 表达式生成器将不会出现,因为它是一个旧的(Access 2000).MDB文件。我将其转换为.accdb格式(Access 2010中的“保存和发布”允许您进行转换)。然后表达式生成器将可用于表上的计算字段

  • 我创建了四个计算字段;每个日期部分一个,最后一个文本字段来连接它们;然后我创建了第五个(文本)列,并手动复制数据表视图中的值(我告诉过你这是一个黑客行为)。计算列的表达式是(假设前三个计算列被称为“TheYear”、“TheMonth”和“TheDay”):

年份([英国日期])
月份([英国日期])
日期([英国日期])

然后是连接列表达式,它是一个计算文本列,带有两个IIF表达式来处理单个数字值(因为Access中似乎没有任何“PAD”函数):

[TheYear]+'-'+IIf(Len([TheMonth])=2[TheMonth],'0'+[TheMonth])+'-'+IIf(Len([TheDay])=2[TheDay],'0'+[TheDay])

这将生成一个日期格式为SQL的文本字段:例如“2013-12-31”


然后,我选择了表中的列Ctrl-C和Ctrl-V,并将其放入一个新的空文本列中。然后删除原始的有问题的列和计算列。最终结果是一个格式正确的(文本)列,可以无误地放大,并根据需要在T-SQL中操作。

您能找到一台32位机器来运行SSMA吗?