对象名 "{TableName}" 无效

考勤系统用的数据库是sql server 2000,于是问开发商能否迁至mysql  or  pgsql?回答是No。无奈之下只好把目标转向sql server express,但不管是复制还是导入,启动程序都会出现标题所示错误,当初以为是程序不支持express版本,就不了了之了。

最近几天在仿着一些项目coding公司的SCM,为了看实例的效果,要把数据库文件附加上sql server服务器上去,然而,启动程序时也出现了同样的问题,于是google得知,是因为sql server登录名与用户不匹配的关系。

解决办法也不难(先添加登录名,可与用户名相同):

步骤1:

exec sp_change_users_login ‘REPORT’

列出当前数据库的孤立用户

步骤2:

exec sp_change_users_login ‘AUTO_FIX’,’用户名’

可以自动将用户名所对应的同名登录添加到syslogins中

步骤3:

exec sp_change_users_login ‘UPDATE_ONE’,’用户名’,’登录名’

将用户名映射为指定的登录名。

还有一种原因会造成此错误,就是登录名具有dba的权限或者系统管理的权限,去掉此权限即可。