标签: debugging

如何确定 MongoDB 文档验证失败的原因?

如何确定 MongoDB 文档插入验证失败的原因?我得到的只是一个写着“文档验证失败”的 writeError,这不是很有帮助。

(这种情况经常发生,我想了解如何正确调试这些,而不是寻求特定示例的帮助。)

mongodb debugging data-validation

18
推荐指数
1
解决办法
2万
查看次数

我如何找出*为什么*用户具有某些有效权限?

我知道我可以使用sys.fn_my_permissions以下方法查询有效权限:

USE myDatabase;
SELECT * FROM fn_my_permissions('dbo.myTable', 'OBJECT') 

 entity_name | subentity_name | permission_name 
------------------------------------------------
 dbo.myTable |                | SELECT          
 dbo.myTable |                | UPDATE          
 ...
Run Code Online (Sandbox Code Playgroud)

这告诉我当前用户myTable在数据库中是否具有 SELECT、INSERT、UPDATE 等权限myDatabase

是否可以很容易地找出为什么用户拥有这些权限?例如,我希望有一个fn_my_permissions_ex输出附加reason列的函数:

USE myDatabase;
SELECT * FROM fn_my_permissions_ex('dbo.myTable', 'OBJECT') 

 entity_name | subentity_name | permission_name | reason
------------------------------------------------------------------------------------------------------------------------------------
 dbo.myTable |                | SELECT          | granted to database role public
 dbo.myTable |                | UPDATE          | member of group MYDOMAIN\Superusers, which belongs to database role db_datawriter
 ... …
Run Code Online (Sandbox Code Playgroud)

security sql-server permissions debugging

14
推荐指数
1
解决办法
4403
查看次数

带有类型修饰符的数据类型的惊人结果

在讨论这个问题的递归 CTE 解决方案时:

@ypercube偶然发现了一个令人惊讶的异常,这导致我们调查类型修饰符的处理。我们发现了令人惊讶的行为。

1. 类型转换在某些上下文中保留了类型修饰符

即使被指示不要这样做。最基本的例子:

SELECT 'vc8'::varchar(8)::varchar
Run Code Online (Sandbox Code Playgroud)

人们可能会期望varchar(没有修饰符),至少我会。但结果是varchar(8)(带修饰符)。下面的小提琴中有许多相关的案例。

2. 数组连接在某些情况下失去了类型修饰符

不需要,所以这在相反的一面出错:

SELECT ARRAY['vc8']::varchar(8)[]
     , ARRAY['vc8']::varchar(8)[] || 'vc8'::varchar(8)
Run Code Online (Sandbox Code Playgroud)

第一个表达式varchar(8)[]按预期产生。
但是第二个,在连接另一个之后varchar(8)被淡化到只是varchar[](没有修饰符)。来自array_append(),下面小提琴中的示例的类似行为。

在大多数情况下,所有这些都无关紧要。Postgres 不会丢失数据,并且当分配给列时,该值无论如何都会被强制转换为正确的类型。然而,相反方向的错误最终会导致一个令人惊讶的异常:

3. 递归 CTE 要求数据类型完全匹配

鉴于此简化表:

CREATE TABLE a (
  vc8  varchar(8)  -- with modifier
, vc   varchar     -- without  
);
INSERT INTO a VALUES  ('a',  'a'), ('bb', 'bb');
Run Code Online (Sandbox Code Playgroud)

虽然此 rCTE 对varchar列有效vc,但对 …

postgresql datatypes cte debugging cast

11
推荐指数
1
解决办法
1825
查看次数

SQL Server:无法启动调试器 - 数据为空

我是一名使用 SQL Server 2014 实例开发 Web 应用程序的开发人员。我使用 Visual Studio 2010 sp1 进行开发。对于我目前正在处理的任务,我想使用 SQL Server 远程调试器来调试我们通过 ORM(实体框架)调用的非常大的存储过程。为此,我打开 SQL Server Management Studio 2014 并在新的查询窗口中键入以下内容:

EXEC [dbo].[MoveAllInvoiceStage]
Run Code Online (Sandbox Code Playgroud)

当我按下调试按钮时,我收到以下错误:

====================================

无法启动调试器

====================================

数据为空。不能对 Null 值调用此方法或属性。(系统.数据)

------------------------------ 节目地点:

在 System.Data.SqlTypes.SqlBinary.get_Value() 在 Microsoft.SqlServer.Management.UI.VSIntegration.DebugSession.DebugCallbacks.OnSqlInitializeDebuggingEvent(ISqlInitializeDebuggingEvent sqlInitializeDebuggingEvent) 在 Microsoft.SqlServer.Management.UI.VSIntegration.DebugSession.DebugCallbacks.Microsoft.VisualStudio .Debugger.Interop.IDebugEventCallback2.Event(IDebugEngine2 debugEngine, IDebugProcess2 debugProcess, IDebugProgram2 debugProgram, IDebugThread2 debugThread, IDebugEvent2 debugEvent, Guid& riidEvent, UInt32 属性)

接下来是一个对话框,上面写着:

无法启动程序“MSSQL:://<servername>/<databasename>/sys/=0”。

我正在使用具有 sysadmin 角色的 Windows 登录名连接到数据库服务器,并且所有必要的防火墙规则都已在服务器和我的 PC 上就位。我确保满足此处列出的要求。

当数据库服务器托管 SQL Server 2008 R2 实例时,远程调试器正在工作,但似乎在将实例升级到 SQL Server 2014 后停止工作。我仍然可以在本地 SQL Server 2014 实例(托管远程数据库)。只有远程调试会产生此问题。

我已经确认另一台 …

sql-server debugging remote

7
推荐指数
1
解决办法
7219
查看次数

如何调试 SQL Server 2008 R2 中的死锁?

我正在使用 SQL Server 2008 R2,它根据我的查询自动锁定数据库项目。

有时这种死锁 - 具有不同查询的两个线程永远不会结束。

有什么方法可以调试 SQL Server 如何锁定和解锁资源?我尝试过 SQL Trace,但它没有关于资源锁的信息。

deadlock sql-server-2008-r2 debugging

6
推荐指数
1
解决办法
2万
查看次数

远程调试

我遇到了远程调试问题。我有一个非域服务器和一个非域客户端 PC。客户端 PC 可以成功连接到服务器和实例,它甚至可以作为服务器本地管理员帐户的上下文运行 SSMS。但即使设置了所有这些,当我尝试在 SSMS 中调试时,我还是收到以下错误:

无法启动 T-SQL 调试。无法附加到 SQL Server 进程

我已遵循此资源中的所有这些步骤和检查:

测试 1:当您在本地连接到同一实例时,问题不会重现

测试 2:检查 TCP 139、TCP 445、UDP 137 和 UDP 138 是否从双方(服务器和客户端)打开(例如:配置 Transact-SQL 调试器)

测试 3:检查 SQL management Studio 是否已通过“运行管理员...”启动

测试 4:检查 SQL 服务帐户是否可以连接到客户端计算机。使用T-SQL调试时,SQL服务账号会与机器主机Management Studio进行通信。使用域账号设置SQL服务是一个额外的原因

测试 5检查 SSMS 和 SQL 服务器服务是否在同一个域中。如果没有,请设置与 SQL Server 使用的帐户和密码相同的帐户和密码。

测试 6:检查您的域帐户是否为 sysadmin。

测试 7:检查 Kerberos 是否已正确启用并且 SPN 是否适合您的实例。- SQL 网络接口库无法注册 SPN - SQL Server 2008 连接问题:无法生成 SSPI 上下文

测试 8:从服务器端检查以下服务是否已启动 …

sql-server debugging remote

5
推荐指数
1
解决办法
1万
查看次数

如何记录有关存储过程的调试信息

我们有一组相当复杂的存储过程,它们以全天候计划处理事务队列。这些脚本使用许多打印语句来记录正在执行的操作以帮助调试。

我想在生产中运行时保留此信息(作为 SQL Server 代理作业),以帮助在出现问题时进行故障排除。我看过这个网站,它有一个相当好的保存打印输出的方法,但它也有一些缺点(在脚本完成之前输出不可用等)。它还需要我没有经验的 SSIS 或 DTS。

我想过将所有打印语句更改为将语句插入到日志表中。问题是我们需要调试信息的大部分工作都在事务控制之下,如果出现错误,所有日志信息都将与实际事务一起回滚。

有没有人有更好的解决方案或如何使用我在上面看到的任何一个解决方案的想法?

sql-server stored-procedures debugging

5
推荐指数
1
解决办法
8669
查看次数

如何更改 T-SQL 调试器的默认端口

T-SQL Debugger 的默认端口是 135,是否可以更改此端口?在我的公司中,此端口位于禁止端口的特殊列表中,因此我们需要在另一个端口号上打开该服务。

我正在关注这篇文章:

用于 SQL Server 2008 的 Transact-SQL 调试器——Bill Ramos 的第 2 部分

sql-server sql-server-2008-r2 configuration debugging

5
推荐指数
1
解决办法
267
查看次数

无法启动 TSQL 调试器

我想在 TSQL 中调试。当我开始调试时,会弹出以下消息框。在 SSMS v17.2 中

在此处输入图片说明

然后我看到这个消息:

在此处输入图片说明

在 Microsoft Visual Studio 2015 服务器资源管理器中,同样的错误:

在此处输入图片说明

然后我看到这个消息:

在此处输入图片说明

谢谢你!

sql-server ssms debugging visual-studio-2015

5
推荐指数
1
解决办法
2321
查看次数

无需向开发人员授予系统管理员的 SQL Server 调试器权限

BOL 文档说运行调试器需要 sysadmin 权限。

我 90% 肯定没有解决此要求的方法,但我想我会问以防万一有人找到了一种方法来授予调试器权限而不授予系统管理员权限。

当您有一个开发团队需要逐步执行带有变量等的复杂游标循环以调试某些方面时,人们会怎么做?

大多数商店甚至不允许开发人员在开发服务器上拥有系统管理员权限,并且许多商店不允许开发人员使用他们自己的开发人员 sql server 版本在他们的本地机器上保留企业数据的副本,例如由于 PII 和数据安全原因。

不知道为什么调试器会这样设置。

所以,我很好奇其他人如何处理类似场景中的 Debugger 权限请求。

你在你的环境中做什么?

sql-server permissions debugging sql-server-2014

5
推荐指数
1
解决办法
8579
查看次数

显示 DB2 存储过程中发生错误的行号

我在捕获 SQLSTATE 和 SQLCODE 的过程中添加了一个 EXIT 处理程序,甚至找到了获取过程名称的方法,但我还需要知道错误发生的位置。建议非常感谢。

declare EXIT handler for SQLEXCEPTION
begin
    select sysibm.routine_specific_name, SQLSTATE, SQLCODE 
    into v_sp_name, v_sqlstate, v_sqlcode 
    from sysibm.sysdummy1;

    call dbms_output.put_line('Error in '||v_sp_name ' ['||v_sqlstate, v_sqlcode||']');
end;
Run Code Online (Sandbox Code Playgroud)

db2 stored-procedures debugging exception db2-luw

3
推荐指数
1
解决办法
178
查看次数

如何在 SQL Server 2012 中配置数据收集?

在 Windows Server R2 Standard 上的 SQL Server 2012 Enterprise 的 SSMS 中,每次我尝试设置数据收集集选项“非缓存 - 按相同计划收集和上传数据”的子选项“按需”时,我是得到错误:

没有计划,收集集无法启动。指定集合集的时间表

在此处输入图片说明

标题:Microsoft SQL Server 管理工作室

对象“磁盘使用情况”上的“更改”操作在执行期间失败。(Microsoft.SqlServer.Management.Sdk.Sfc)

执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)

捕获错误#:14684,级别:16,状态:1,在过程:
sp_syscollector_start_collection_set,行:203,与消息:捕获错误#:14693,级别:16,状态:1,在过程:
sp_syscollector_start_collection_set,行:108,与消息:没有计划就无法启动集合集。指定集合集的计划。(Microsoft SQL Server,错误:14684)

现在,除了启用和禁用已经存在的故障数据收集之外,我看不到如何以任何方式重新设置或重新配置数据收集。

任何想法如何使它工作?

首先,我想了解是我搞砸了它(尽管我在不同的机器上尝试过)还是其他人?

更新:
Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
企业版:Windows NT 6.1 上的基于核心的许可(64 位)(内部版本 7601:Service Pack 1)(管理程序)

sql-server sql-server-2012 debugging troubleshooting

2
推荐指数
1
解决办法
2672
查看次数

在 Oracle 中是否可以跟踪导致错误的 SQL 语句?

我们在生产中使用了 Oracle 11g。应用系统仍在积极开发中。获取导致任何错误的 SQL 语句将非常方便。

Oracle 是否提供标准函数来跟踪和记录这些语句和附加(调试)信息?

oracle debugging

1
推荐指数
1
解决办法
5795
查看次数