为啥我的SQL 2005用Windows身份验证登陆的时候出现18456错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我的SQL 2005用Windows身份验证登陆的时候出现18456错误相关的知识,希望对你有一定的参考价值。

这种情况与软件、硬件都可能有关。与软件的关系主要是:应用程序本身出现问题,这种问题也许是程序员编程问题或被病毒感染问题,你运行该程序时出现问题说明就是这个程序有瑕疵或被病毒感染。如以下情况:
1、驱动不稳定,与系统不兼容;
2、系统安装了一个或者多个流氓软件;
3、系统加载的程序或者系统正在运行的程序之间有冲突,尤其是部分杀毒软件监控程序;
4、系统本身存在漏洞;
5、病毒问题;
6、如果在玩游戏时候出现内存不能为 Read,则很大可能是显卡驱动不适合(这里的不适合有不适合该游戏、不适合电脑的显卡);
7、部分软件本身自身不足的问题;
二是与内存有关。内存坏、兼容性不好、运行期间过热或接触不良都有可能出现这种问题。
鉴于此,可采取如下办法:
从软件方面考虑:
一是注册DLL动态链接库文件,解决应用程序(含驱动程序)与系统不兼容的问题。开始——运行,输入cmd 回车在命令提示符下输入 :
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
二是在控制面板的添加/删除程序中看看你是否安装了微软NET.Framework,如果已经安装了,可以考虑卸载它,当然如果你以后在其它程序需要NET.Framework时候,可以再重新安装。
另外,如果你用的是ATI显卡并且你用的是SP2的补丁(一些ATI的显卡驱动需要在NET.Framework正常工作的环境下)。这种情况你可以找一款不需要NET.Framework支持的ATI显卡驱动。
三是用一下“IE修复”软件修复一下IE浏览器。
四是安全模式下全盘杀毒。
五是给系统打补丁。
以上方法不解决问题话,可以从硬件方面考虑:将内存插拔一下、换个插槽、或更换内存。
祝好运!
参考技术A 解决方法一:右击SQL Server2005管理工具的图标选择“以管理员身份运行(或“run as administrator")”,弹出框点确认,就OK了。
以上解决方法可以搞定好多在WIN 7 上启动或登陆不了的服务或是软件。

解决方法二:此方法针对只能以SQL Server身份登陆
可能安装的时候没有选择当前用户,先找到自己的系统账户,如上图我的是[zhangzaocha-PC\zhangzaocha]解决办法是用sa用户登陆,执行SQL语句
登陆之后执行SQL语句:CREATE
LOGIN
[zhangzaocha-PC\zhangzaocha]
FROM
WINDOWS

内容整理:系统城
参考技术B 18456错误信息是什么?只有错误号,好难判断啊

核心数据 - 为啥我的 NSPredicate 没有产生正确的 SQL 查询?

【中文标题】核心数据 - 为啥我的 NSPredicate 没有产生正确的 SQL 查询?【英文标题】:Core Data - why is my NSPredicate not resulting in the correct SQL query?核心数据 - 为什么我的 NSPredicate 没有产生正确的 SQL 查询? 【发布时间】:2017-05-11 09:27:02 【问题描述】:

这两个我都试过了NSPredicates:

            let predicate = NSPredicate(format: “personID == %lld", id)
            let predicate = NSPredicate(format: “personID == %d", id)

我启用了 SQL 日志记录,并在 SQL 查询结束时看到了这一点:

WHERE  t0.ZPERSONID = ? 

在变量视图中,id 的值为 Int64(156),但无论我用什么代替 id,生成的 SQL 查询的 WHERE 子句都有 t0.ZPERSONID = ?。因此,谓词是无用的,我每次都会插入重复的记录。如何获得t0.ZPERSONID = 156

【问题讨论】:

您也可以在日志中检查值,但所有值将用逗号分隔,您可以将它们放在上面的查询中 @VarunNaharia 很抱歉,但我不明白你的评论是什么意思。您指的是什么日志,我在哪里可以看到这些值? @VarunNaharia 在 Xcode 的控制台日志中添加的唯一 SQL 日志记录是一个查询,其中我发布了 WHERE 子句。没有别的了。 @Questioner:将 Core Data 调试级别设置为 3(请参阅***.com/a/12306537/1187415),然后您将看到 SQLite 查询绑定到哪些值。 这意味着查询是“WHERE t0.ZPERSONID = 2595”。 – 如果idInt64,那么NSPredicate(format: "personID == %lld", id) 应该是正确的。 print(predicate) 显示什么? 【参考方案1】:
WHERE  t0.ZPERSONID = ?

是(部分)准备好的语句。要查看参数绑定到哪些值,请将 Core Data 调试级别设置为 3(比较 How to print Core Data debug values?):

-com.apple.CoreData.SQLDebug 3
-com.apple.CoreData.Logging.stderr 1

print(predicate) 也有助于检查创建的谓词 为了正确。

在您的情况下,问题是您传递了一个 NSNumber 实例 作为参数,但%lld 格式需要Int64

您可以将NSNumber 转换为Int64

let id = NSNumber(value: Int64(156))

let p1 = NSPredicate(format: "personID == %lld", id.int64Value)
print(p1) // personID == 156

或者更简单,改用%@ 格式:

let p2 = NSPredicate(format: "personID == %@", id)
print(p2) // personID == 156

【讨论】:

以上是关于为啥我的SQL 2005用Windows身份验证登陆的时候出现18456错误的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server2005 windows身份验证无法登陆问题

为啥 IIS 中的 Windows/集成身份验证不将用户凭据传递给 s-s-rS 和 SQL?

MS Access 2003 + 到 SQL Server 2005 的链接表 + Windows 身份验证 = 慢

为啥SQL数据库登录不上?

(转)SQL Server 2005两种安全验证模式

sql server 2005 创建用户,登录名为:windows身份验证时,创建时错误失败