在过去的4个月里,我正在开发一个C# VS 2010的应用程序。我使用MS Access 2007成功地存储了我的近20个表。
今天我意识到我的数据库不能被MS Access 2007一致地处理。因此,我决定使用带有升迁向导的SQL Server2008 R2 Express,它工作得非常好!
但是,当我尝试运行已经开发得很好的应用程序的各种选项时,每次向SQL Server发出查询时,它都会抛出错误。
据我所知,MS Access支持的SQL的很多东西都不被MS SQL Server支持
例如:带日期的查询,用于表示日期格式当我们使用'#‘时,SQL Server 2008将无法识别它。
此外,对于布尔值,MS Access将其存储为True和False,而SQL Server使用0。
所有这些查询在Access 07中都能完美工作
我相信一定有某种方法可以让SQL Server理解MS access查询。
或者我必须编辑整个应用程序??这就好比挖一座矿来淘金。
我已经使用System.Data.SqlClient更改了所有数据访问对象,如读取器、适配器、命令、连接到SQL数据对象。
所以,这不是问题所在。
请尽快帮我。
谢谢。
发布于 2012-03-20 00:19:11
不能强制SQL Server运行MS Access查询。这些查询需要重写为使用T-SQL,而不是MS Access使用的查询语言。
我感受到了你的痛苦,我刚刚重写了一个大型的MS Access应用程序(超过1000个查询),需要重新创建才能在SQL Server中使用。
可能会有一些查询可以直接移植过来,但正如您注意到的那样,带有date的查询,甚至一些聚合函数(First()等)在SQL Server中没有使用,这些查询将需要更改。
以下是有关将Access转换为SQL的一些信息的链接
Converting Access Queries to SQL Server
发布于 2012-03-20 10:22:21
您说得对,在大多数情况下,您不能仅从Access获取查询的SQL并在SQL Server中运行它。它可能适用于非常简单的查询,但通常需要对它们进行调整。
下面是我要采取的几个步骤:
(例如,您可以简单地向您的应用程序添加一些代码,以便将所有查询打印到文件,这样您就不必处理参数,然后只需将它们复制/粘贴到您的Access DB中)。
要点很简单,就是在Access中进行查询。
你可能仍然需要手动转换一些麻烦的查询,但这不应该那么多,通常转换不是difficult.
在尝试转换之前,请查看Access中的表并进行一些清理:
- For booleans fields:确保将它们的默认值设置为0或1(它们不应为空)。
-必填字段必须为非空:
请确保您设置为“必填”的任何字段的数据中不包含任何空值。
-唯一索引不能忽略Null:
检查索引是否未同时设置为“唯一”和“忽略null”。
-所有表必须有干净的主键:
确保所有的表都有一个唯一的主键,该主键的数据中没有Null值。
https://stackoverflow.com/questions/9773754
复制相似问题