小编gbn*_*gbn的帖子

在Sql Server中,如何将二进制字符串转换为二进制?

我有一些字符串格式的数据表示二进制数据(例如'0x0002').是否有一些函数或技巧可以将它们从文字字符串转换为二进制文件?也就是说,我希望'0x0002'变为0x0002,而SELECT CAST('0x0002'AS BINARY(20))显然不会这样做.我确实提出了一个非常缓慢的过程,包括构建SQL语句并将它们分配给变量并执行它(例如"EXEC(@Query)"),但我正在寻找一些我不需要做的事情那.

如果它有帮助,这是一个示例表,您可以在上面测试:

CREATE TABLE #T (BinaryString VARCHAR(100))
INSERT INTO #T VALUES('0x0000000000000000000000000000000000000002') -- Binary = the integer 2
INSERT INTO #T VALUES('0x000000000000000000000000000000000000007B') -- Binary = the integer 123
Run Code Online (Sandbox Code Playgroud)

sql sql-server string binary

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

SQL Server - 使用视图而不是触发器时获取插入的记录标识值

对于具有标识字段的多个表,我们在这些视图上使用视图和替代触发器实现行级安全性方案.这是一个简化的示例结构:

-- Table
CREATE TABLE tblItem (
    ItemId int identity(1,1) primary key,
    Name varchar(20)
)
go

-- View
CREATE VIEW vwItem 
AS
    SELECT *
    FROM tblItem
    -- RLS Filtering Condition
go

-- Instead Of Insert Trigger
CREATE TRIGGER IO_vwItem_Insert ON vwItem
INSTEAD OF INSERT
AS BEGIN
    -- RLS Security Checks on inserted Table

    -- Insert Records Into Table
    INSERT INTO tblItem (Name)
    SELECT Name
    FROM inserted;
END
go
Run Code Online (Sandbox Code Playgroud)

如果我想插入记录并获取其身份,在实现RLS而不是触发器之前,我使用了:

DECLARE @ItemId int;

INSERT INTO tblItem (Name)
VALUES ('MyName');

SELECT @ItemId …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server triggers identity

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

在SQL中等效于VB AndAlso?

在SQL(SQL Server 2005)中是否有与VB的AndAlso/ OrElse和C#的&&/相同的功能||.我正在运行类似于以下的选择查询:

SELECT a,b,c,d
FROM table1
WHERE 
(@a IS NULL OR a = @a)
AND (@b IS NULL OR b = @b)
AND (@c IS NULL OR c = @c)
AND (@d IS NULL OR d = @d)
Run Code Online (Sandbox Code Playgroud)

例如,如果将"@a"参数作为NULL传入,则无法评估WHERE子句的第二部分(a = @a).有没有办法通过使用特殊语法或重写查询来避免这种情况?

谢谢,詹姆斯.

sql t-sql sql-server sql-server-2005 short-circuiting

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

SQL Server 2005阻止问题(ASYNC_NETWORK_IO)

我负责在IIS和SQL Server 2005上运行的第三方应用程序(无法访问源)(500个并发用户,1TB数据,8个IIS服务器).我们最近开始看到对数据库的严重阻塞(在生产中运行此应用程序几个月后没有问题).这种情况在白天以大约每30分钟的随机间隔发生,每次影响20到100次.所有会话最终都会使应用程序超时并且会话中止.

问题消失,然后逐渐重新出现.负责阻止的SPID始终具有以下功能:

  • 等待类型= ASYNC_NETWORK_IO
  • 正在运行的SQL是"(@claimid varchar(15))SELECT claimid,enrollid,status,orgclaimid,resubclaimid,primaryclaimid FROM claim WHERE primaryclaimid = @claimid AND primaryclaimid <> claimid)".这是相对无害的SQL,应该只返回一个或两个记录,而不是大数据集.
  • 没有其他SQL语句涉及阻塞,只有这个SQL语句.
  • 这是参数化SQL,其执行计划缓存在sys.dm_exec_cached_plans中.
  • 此SPID在声明表上具有对象级S锁,因此也会阻止声明表的所有UPDATE/INSERT.
  • 主机ID各不相同.不同的Web服务器负责阻塞会话.例如,有时我们追溯到Web服务器1,有时是Web服务器2.

当我们追溯到阻塞中涉及的Web服务器时,我们会看到以下内容:

  • Web服务器上的事件日志中始终存在某种与应用程序相关的错误,该错误链接到SQL会话中的主机ID和主机进程ID.
  • 错误消息各不相同,通常是某种SystemOutofMemory.(这些错误消息似乎与我们过去看到的错误消息类似,没有产生如此严重的后果.我们认为之前发生过,但没有导致阻塞.为什么现在?)
  • Web服务器或SQL Server上的网络适配器没有已知问题.

(无论如何,违规查询返回的记录集很小.)

事情排除在外:

  • 索引经常进行碎片整理.
  • 统计定期更新.
  • 关于claim.primaryclaimid的统计数据的样本量增加.
  • 强制重新编译缓存的执行计划.
  • 使用primaryclaimid,claimid创建复合索引.
  • 没有网络问题.
  • Web服务器上没有已知问题.
  • Web服务器上的应用程序软件没有变化.

我们假设事件链是这样的:

  1. Web服务器进程提交上面的SQL.
  2. SQL Server执行SQL,在此期间它获取声明表上的锁.
  3. Web服务器进程出错并死亡.
  4. SQL服务器会话挂起,等待Web服务器进程读取数据集.
  5. 需要在声明表的某些部分(处理声明的任何人)上获取X锁的SQL Server会话被声明表上的锁阻止,并保持阻塞,直到它们全部达到应用程序超时.

任何在等待供应商帮助时进行故障排除的建议都将受到欢迎.

有没有办法强制SQL Server仅锁定此特定SQL语句的行/页级别?有没有办法在ASYNC_NETWORK_IO等待上设置阈值?

performance sql-server-2005

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

T-SQL:使用OVER和PARTITION BY

我有以下数据

 |  Item  | Value |    Date   |
 ------------------------------
 |   1    |  10   | 01.01.2010
 |   1    |  20   | 02.01.2010
 |   1    |  30   | 03.01.2010
 |   1    |  40   | 04.01.2010
 |   1    |  50   | 05.01.2010
 |   1    |  80   | 10.01.2010
 |   2    |  30   | 04.01.2010
 |   2    |  60   | 06.01.2010
 |   2    |  70   | 07.01.2010
 |   2    |  80   | 08.01.2010
 |   2    |  100  | 09.01.2010
Run Code Online (Sandbox Code Playgroud)

以下声明

SELECT   Item, Value, MIN(Date) …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005

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

select语句中的sql rowlock

我有一个ASP.Net网页,用户选择一行进行编辑.我想在该行上使用行锁,一旦用户完成编辑和更新,另一个用户就可以编辑该行,即如何使用rowlock以便只有一个用户可以编辑一行?

谢谢

t-sql sql-server locking pessimistic-locking

5
推荐指数
2
解决办法
8558
查看次数

存储过程 - 强制执行顺序

我有一个存储过程本身按顺序调用其他存储过程的列表:

CREATE PROCEDURE [dbo].[prSuperProc]

AS
BEGIN
    EXEC [dbo].[prProc1] 
    EXEC [dbo].[prProc2] 
    EXEC [dbo].[prProc3]
    --etc
END
Run Code Online (Sandbox Code Playgroud)

但是,我的表中有时会产生一些奇怪的结果,由prProc2生成,这取决于prProc1生成的结果.如果我按顺序手动执行prProc1,prProc2,prProc3,那么一切都很好.看来,当我运行顶级过程时,在Proc1完成之前正在执行Proc2并将其结果提交给db.它并不总是出错,但是当Proc1有一个很长的执行时间(在这种情况下〜10s)时似乎出错了.

如何更改prSuperProc,以便每个过程仅在前面的过程完成并提交后才执行?交易?

编辑额外的细节:

我的数据库中有一个表,它有一个默认为null的列.prProc1在此表上执行一组更新语句以填充此列.然后,prProc2根据此列中的值将摘要数据插入到辅助表中.

当我运行超级过程时,我(有时)看到的是第一个表具有由prProc1正确计算的结果,但是prProc2已生成结果,就像列全部为空.如果我然后手动运行prProc2,则会正确生成摘要数据.

t-sql sql-server stored-procedures

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

Tsql按特定字符串值排序数据

我有一个审计表,其中包含插入,更新和删除操作的数据.我正在编写一个报告,它将按插入,更新和删除的顺序显示数据.我不认为order by子句会有所帮助.任何帮助?

sql t-sql sql-server

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

需要Sql server 2008 codeSnippets或模板建议

有很多工具有些免费,有些不提供代码服务设施.出于某些原因,我在公司工作,他们不想安装或购买任何第三方的东西.

我需要使用sql server 2008.有没有办法修改模板,这样当你选择创建新的SP时,它会加载自定义sp.简而言之,我想知道我是否可以在sql server 2008中使用代码片段而不使用第三方工具或我如何修改模板.

有什么建议?

非常感谢

sql-server ssms sql-server-2008

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

WebSphere Kerberos多跳失败

我们有一个新的第三方应用程序,Linux上的IBM WebSphere,支持SPNEGO,用于我们的Windows AD的SSO.除了一个案例外,这符合预期.

WebSphere调用使用传递身份验证的现有Windows Web服务,因此最终用户凭据将呈现给SQL Server.此Windows安装程序也可以.

什么不起作用:WebSphere凭据不会多跳到SQL Server

摘要

  • Windows浏览器 - > IIS Web服务 - > SQL Server =确定
  • Windows浏览器 - > IIS GUI - > IIS Web服务 - > SQL Server =确定
  • Windows浏览器 - > IBM Web Sphere - > IIS Web服务 - > SQL Server =在"IIS到SQL"跳转失败

失败:

  • 在IIS Web服务中,它失败并显示"无法生成SSPI上下文",不正确的目标主体名称等
  • 在IIS服务器事件日志中(启用Kerberos日志记录)

错误代码:0x24 KRB_AP_ERR_BADMATCH
服务器领域:XXX.CH.OURDOMAIN.COM
服务器名称:MSSQLSvc/oursqlserver.xxx.ch.ourdomain.com:50025
目标名称:MSSQLSvc/oursqlserver.xxx.ch.ourdomain.com:50025 @XXX. CH.OURDOMAIN.COM

其他信息

  • IIS Web服务配置为委派(不受约束),它可以从Windows客户端运行
  • 为出站约束委派设置IBM WebSphere服务帐户
  • 最终用户SSO适用于IBM WebSphere(ergo Kerberos机制等可以)
  • IBM WebSphere对IIS Web服务验证OK(同上)
  • SQL Server的SPN是正确的(也使用SQL Server Kerberos工具和sys.dm_exec_connections进行验证)
  • 这里完成的所有步骤都是https://www.ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/tsec_SPNEGO_config.html
  • IIS GUI和Web服务位于同一台计算机上
  • 所有SPN,keytabs,A2D2设置等都可以

从IBM …

websphere kerberos spnego websphere-liberty

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