SQL常见问题

关于SQL的常见问题解答

1. SQL语句在Access里可正常执行,但在VB程序里报“FROM子句语法错误”

例如,报错SQL:

1
2
3
4
5
6
7
SELECT
gz,
yz
FROM
(SELECT DISTINCT gz, yz FROM dg LEFT JOIN dgdw ON dg.dg = dgdw.gz WHERE cpxh = 'abc') AS a
ORDER BY
gz;

在Access里执行没问题,但放到代码里就FROM子句语法错误。此时,只需将from子语句用[]括起来,后面跟一个.即可。
正确SQL如下:

1
2
3
4
5
6
7
SELECT
gz,
yz
FROM
[SELECT DISTINCT gz, yz FROM dg LEFT JOIN dgdw ON dg.dg = dgdw.gz WHERE cpxh = 'abc']. AS a
ORDER BY
gz;

2. SQL Server安装提示暂挂项目

打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations项目,并删除它。这样就可以清除安装暂挂项目。

3. SQL语句在查询分析器执行速度很快,但在程序代码中执行很慢

1
Public MRec As New ADODB.Recordset

例如,在VB代码中使用上面定义的对象执行MRec.Open时,查询很慢,但SQL在查询分析器中执行很快很快。
此时的解决办法是:更换Recordset对象,例如使用Public MRec2 As New ADODB.Recordset定义新的MRec2查询即可。

具体原因不详,很诡异的问题。