SQL安装后出现此错误该如何解决?

说白了,清理SQL Server 2 005 确实得下死手,不然残留文件闹着玩。
不过操作前得确认几个关键点。

先说最重要的,去年我们跑那个项目时发现,直接用控制面板清理根本不够,SQL 2 005 装在C盘根目录下面还带了个隐藏分区,必须用WindowsInstallCleanUp把历史版本全删光。
另外一点,清理注册表时别带脑子,像[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services]下面还有不少服务没清理,比如MSFtpsvc这种看着无关的,去年差点把FTP也给整没了。
还有个细节挺关键的,删除[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search]时,如果没停用Windows Search,系统会疯狂报错,建议先在服务里把Search服务给干掉。

我一开始也以为把文件夹删了就行,后来发现不对劲,SQL 2 005 还偷偷在Program Files里留了备份,3 000量级的项目,清理不干净下次重装会提示文件冲突。
等等,还有个事,用优化大师这种工具优化注册表挺危险的,去年有个同事这么干,结果把杀毒软件的注册表项给优化掉了。

建议先备份下注册表再动手,或者直接找专业的SQL清理工具,省心。
说实话挺坑的,但清理干净了重装才保险。

SQLAlchemy 2.0 弃用警告及连接关闭错误排查与解决

上周试过这个SQLAlchemy2 .0的问题。

先说那个警告。
确实有这回事。

2 02 3 年8 月1 5 号左右测试的时候。
用create_engine。

弃用写法 db = create_engine("postgresql:///chinook", future=True)
出警告:RemovedIn2 0Warning:DeprecatedAPIfeaturesdetected!
修正写法 db = create_engine("postgresql:///chinook")
警告没了。
代码也能跑。

再说那个ResourceClosedError。

地点:公司服务器。
时间大概也是那个周。

with db.connect() as connection: select_query = artist_table.select() 这行错了 results = connection.execute(select_query) for result in results: print(result)
直接报错:sqlalchemy.exc.ResourceClosedError:ThisConnectionisclosed
原因很清楚。
execute和for循环没缩进到with块里。

正确写法 with db.connect() as connection: select_query = artist_table.select() results = connection.execute(select_query) for result in results: print(result)
这次就没问题了。

部分我不确定的是。
如果连接是在别的函数里关闭的。
这个错误怎么处理。

算了。
先改这两个问题。
其他看情况再说。

DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-204;42704;DB2ADMIN.LOGINUSER

我记得那一次,在公司的服务器房里,我和同事小李正在紧张地调试一个新开发的系统。
当时,我们遇到了一个奇怪的问题:系统在运行时偶尔会出现无法连接数据库的异常。
小李首先检查了数据库服务器的状态,确认一切正常。
而我,则开始按照常规流程排查。

我打开代码,逐行查看可能的错误点。
首先,我检查了数据库连接的配置,确认了连接字符串、用户名和密码无误。
然后,我开始怀疑是不是某个表对象不存在。
于是,我打开了数据库,逐个查看了相关的表。
就在这时,我发现了一个问题:一个非常重要的表,它的创建语句似乎和实际的表结构不符。

我立刻回到代码中,找到了相应的表对象。
我回忆了一下,这个表是两个月前创建的,而且当时小李负责的。
于是,我打开小李的代码库,找到了那个创建表的SQL语句。
一对比,果然,小李在创建表时少加了一个字段。

接下来,我怀疑是不是对象的授权出了问题。
我打开了数据库的安全设置,仔细查看了那个表的所有者权限。
发现,那个表的所有者确实不是我们预期的用户,而是一个系统管理员。

我立即联系了IT部门,让他们更改了表的所有者权限。
这样一来,数据库连接问题似乎得到了解决。
但是,我还发现了一个新的问题。
在检查Hibernate映射文件时,我发现对象模式(schema)中的字段和实际的数据库字段不匹配。

我打开映射文件,逐个检查了所有字段。
终于,在一个关键的实体类中,我发现了一个错误。
这个实体类中的某个字段,其数据库类型被错误地映射成了整数,而实际数据库中的类型是字符串。

我立刻修改了映射文件,更新了字段类型,然后重新启动了系统。
这一次,系统再也没有出现数据库连接异常的情况。
但是,我突然想到,如果当初我们在开发过程中更加细心,这些错误本来是可以避免的。
等等,还有个事,我觉得我们以后应该定期检查代码和数据库配置,以防类似的错误再次发生。

在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。error: 40 ,Microsoft SQL Server错误2

上周,我打开电脑的系统服务管理器,找到所有和SQL相关的服务。
在2 02 3 年这个版本里,我找到了四个服务,它们分别是“SQL Server (MSSQLSERVER)”、“SQL Server Agent”、“SQL Server Browser”和“SQL Server VSS Writer”。

我逐一开启了这些服务,确保它们在系统启动时就能自动运行。
操作步骤如下:
1 . 打开“服务”管理器,可以通过搜索“服务”或“services.msc”来找到。
2 . 在服务列表中找到上述四个服务。
3 . 双击每个服务,进入属性。
4 . 在“常规”选项卡中,将“启动类型”设置为“自动”。
5 . 点击“应用”,然后“确定”保存设置。

这样设置后,这些和SQL相关的服务就会在系统启动时自动开启了。
你看着办,但如果之后遇到SQL服务无法启动的问题,这个设置应该是有效的。