我有以下问题。
SELECT * FROM tgvbn();
ERROR: function tgvbn() does not exist
LINE 1: SELECT * FROM tgvbn();
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud)
由于官方文档的附录 A只说明了 error_codes 和条件名称,而没有说明实际的消息,因此只能猜测“没有函数匹配...”指的是42883 / undefined_function. 我可以设置log_error_verbosity = verbose在postgresql.conf-但会影响日志,不返回到客户端中的消息:
控制在服务器日志中为记录的每条消息写入的详细信息量。
好吧,我可以查阅日志以获取这条信息,但是有没有办法将其包含在错误消息中?
今天早上我们的 SQL Server 服务宕机,导致我们的一些网站宕机。当我去检查 Windows 事件查看器时,我看到以下错误:
数据库“master”的脚本级别升级失败,因为升级步骤“SSIS_hotfix_install.sql”遇到错误 942,状态 4,严重性 25
无法恢复主数据库。SQL Server 无法运行。从完整备份恢复主文件、修复它或重建它。有关如何重建 master 数据库的详细信息,请参阅 SQL Server 联机丛书。
我做的第一件事就是在谷歌上搜索错误。我最终找到了一个包含确切问题和修复方法的论坛条目(也在我正在寻求解决方案的博客条目上)。该问题与 AlwaysOn 可用性组有关,修复要求您:
使用 Trace Flag 902 启动 SQL Server 服务:
网络启动 MSSQL$InstanceName /T902
打开 SQL Server Management Studio,转到可用性组并从可用性数据库中删除 SSISDB
打开新查询,执行 SSIS_hotfix_install.sql 脚本,该脚本可以在 \Program Files\Microsoft SQL Server\MSSQL11.MSSQL$InstanceName\MSSQL 下的安装文件夹中找到
停止 SQL Server 服务:
网络停止 MSSQL$InstanceName
从 SQL Server 配置管理器启动 SQL Server 服务
将 SSISDB 添加回可用性组
但是,我无法通过第 2 步,因为当我尝试展开“AlwaysOn High Availability”文件夹时出现以下错误:
在您可以在此实例上创建可用性组之前,必须为服务器实例 'InstanceName' 启用“AlwaysOn 功能”。
然后我按照说明转到“SQL Server 配置管理器”和“AlwaysOn High Availability”选项卡以打开该功能。这次该功能变灰了,并且有一条消息说该计算机节点不在故障转移集群中。 …
我在同一个域中有两个 SQL Server 2016 标准版服务器。ServerA有两个链接服务器连接设置到ServerB。
第一个链接服务器连接使用专用的远程SQL 登录安全上下文。那个一直是并且仍然工作正常。
第二个连接使用“登录的当前安全上下文”,它是ServerA 上的Windows 身份验证 (AD) 登录。直到今天,这也运行良好。
今天突然间,连接到 ServerA 然后尝试运行使用第二个链接服务器连接的查询的每个人最终都会遇到以下错误:
链接服务器“LinkedServerName”的 OLE DB 访问接口“SQLNCLI11”返回消息“无法生成 SSPI 上下文”。消息 -2146893044,级别 16,状态 1,第 0 行 SQL Server 网络接口:登录尝试失败
此外,用户目前可以直接连接到 ServerA 和 ServerB,甚至可以直接对 ServerB 上的对象执行查询,但是当他们尝试通过 ServerA 上的链接服务器运行引用 ServerB 上相同对象的查询时,这是唯一一次他们得到上述错误,目前。
这是我们目前看到的SPN和日志(抱歉所有混淆):
ServerB 成功的 SPN 注册 SQL 日志:
ServerB 成功的 SPN 注册 SQL 日志:
ServerA 注册的 SPN:
Warning: PDO::__construct(): The server requested authentication method unknown to the client [mysql_old_password]
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
Run Code Online (Sandbox Code Playgroud)
尝试使用PHP本地服务器上的脚本连接到 Hostgator 上的 MySQL 数据库服务器时出现上述错误。我知道这是一个密码散列问题,通常在 MySQL 4.1 之前和 MySQL 4.1+ 之间。
我已经按照我在此处找到的说明更改了我的本地服务器以使用 old_password 。
改成16位hash后,还是连接不上,报错信息还是一样。更重要的是,我无法再登录到phpmyadmin. 我XAMPP在windows上用。请就如何解决这些问题提出任何建议?
我有一个系统(从另一家开发公司继承),但我还不知道它的所有功能。构造:
- Web 客户端/应用程序(symfony 1.4)
- DB - MySQL。
项目部署在2台服务器上:
1-st:nginx服务器+PHP+DB Master;
2-st:DB 从站。
当数据在 DB Master 上被 web-client 修改时,DB Slave 运行良好,数据有正常的复制过程。当 MySQL 管理客户端修改数据时,我有一个通知:
无法执行语句:无法写入二进制日志,因为 BINLOG_FORMAT = STATEMENT 并且至少一个表使用仅限于基于行的日志记录的存储引擎。当事务隔离级别为 READ COMMITTED 或 READ UNCOMMITTED 时,InnoDB 仅限于行日志记录
然后,DB Slave 崩溃并且复制过程中断(错误插入...重复条目...)。
类似的通知发生(在这种情况下 - 错误)具有相同的文本,当我尝试使用 java 应用程序/模块(它在事务内运行)插入数据时,异常后,事务回滚并且不会发生任何修改。
如何解决这个问题并使系统正常工作并使DB Master和DB Slaves上的修改数据在正常模式下工作成为可能?
我需要有条件地引发错误,但我只能使用简单的语句,而不能使用存储过程。
我想做这样的事情:
select case when foo = "bar" then 1 else SIGNAL SQLSTATE 'ERROR' end;
Run Code Online (Sandbox Code Playgroud)
不幸的是,SIGNAL 仅可用于触发器和过程,我必须在现有应用程序中使用它,该应用程序只允许我输入语句,但不允许我输入过程。(我只有一条长线,无法设置分隔符等)
有没有其他方法可以有条件地导致运行时错误?
当我通过 Microsoft SQL Server Management Studio 使用 SQL Server 运行以下查询时,为什么会在本文的标题中出现错误?
-- create the dash_airports table
CREATE TABLE dash_airports
AS ( SELECT [Loc_Id], [ARP_Latitude], [ARP_Longitude], [Facility_Type], [Wind_Indicator]
FROM airportandrunway.dbo.Airports
WHERE [Loc_Id] IN ('09J','14A','18A','1V6','22S','2I0','YKM','YKN') );
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near '('.
Run Code Online (Sandbox Code Playgroud)
我按照本指南文章中解决方案 2 的说明进行操作,但它显然不起作用。因此,作为健全性检查,我在 MySQL Workbench 中运行了它,它确实在那里工作了!是什么赋予了?
当我跑步时它journalctl -u mssql-server.service说B blob data:
Sep 06 17:34:44 x230 systemd[1]: Stopping Microsoft SQL Server Database Engine...
Sep 06 17:34:44 x230 sqlservr[22239]: [200B blob data]
Sep 06 17:34:44 x230 sqlservr[22239]: [190B blob data]
Sep 06 17:34:51 x230 sqlservr[22239]: [73B blob data]
Sep 06 17:34:51 x230 sqlservr[22239]: [146B blob data]
Sep 06 17:39:51 x230 sqlservr[22239]: [73B blob data]
Sep 06 17:39:51 x230 sqlservr[22239]: [146B blob data]
Run Code Online (Sandbox Code Playgroud)
我也没有运行 DDL 命令,也没有插入或更新 blob 数据。但有可能是mssql-cli在后台执行类似操作。
我的计算机上安装了 Microsoft SQL Server 2019 Developer 版本,用于使用 .NET 进行本地开发工作。两个月前,当我最后一次从事使用它的项目时,一切都运行良好。我终于回到了项目,但现在我的程序失败并出现以下错误:“内部连接致命错误。错误状态 15,令牌:23 (System.Data)”。该程序使用 SQL Server 身份验证帐户。
当我尝试连接到数据库实例时,我在 SQL Server Management Studio (SSMS) 中遇到相同的错误。这是一个已保存的会话,过去localhost\MSSQL2019可以正常工作。无论我使用 Windows 帐户还是 SQL 帐户,我都会收到错误。
我将 SSMS 更新到最新版本(18.12.1),但仍然出现错误。我还通过配置管理器确认了 IP 设置。
无奈之下,我卸载了 MSSQL 2019 Dev 版本,重新启动并尝试使用从 Microsoft 新鲜下载的 DVD ISO 重新安装它。安装接近尾声,但失败并出现相同的错误。
我能够成功安装 MSSQL 2016 Dev 版本并通过 SSMS 连接。但是,当我尝试将其升级到2019时,升级完成,但SSMS再次出现错误。
我使用的是 Windows 10 Pro 21H2,64 位,配备 Intel i7 处理器。
我没有通过 Google 或 Bing 找到解决方案。任何帮助表示赞赏。
为了完整起见,这里是完整的例外。
===================================
Testing the registered server failed. Verify the server name,
login credentials, and database, and then …Run Code Online (Sandbox Code Playgroud) 为什么下面的批次不能按预期工作?
DROP TABLE IF EXISTS #test1;
IF 1 = 1
SELECT *
INTO #test1
FROM sys.databases
WHERE database_id <= 5;
ELSE
SELECT *
INTO #test1
FROM sys.databases;
SELECT *
FROM #test1;
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到:
消息 2714,级别 16,状态 1,第 12 行 数据库中已有一个名为“#test1”的对象。
我必须像这样更改代码:
DROP TABLE IF EXISTS ##test1;
IF 1 = 1
EXEC ('
SELECT *
INTO ##test1
FROM sys.databases
WHERE database_id <= 5;
' );
ELSE
EXEC ('
SELECT *
INTO ##test1
FROM sys.databases;');
SELECT *
FROM ##test1;
Run Code Online (Sandbox Code Playgroud)
这按预期工作。上述错误似乎是一个解析错误,我不确定。谁能帮忙解释一下这里发生了什么?