我无法控制模式的表,包含一个定义为varchar(50)的列,它以'a89b1acd95016ae6b9c8aabb07da2010'格式存储uniqueidentifiers(无连字符)
我想将这些转换为SQL中的uniqueidentifier,以便传递给.Net Guid.但是,以下查询行不适合我:
select cast('a89b1acd95016ae6b9c8aabb07da2010' as uniqueidentifier)
select convert(uniqueidentifier, 'a89b1acd95016ae6b9c8aabb07da2010')
Run Code Online (Sandbox Code Playgroud)
并导致:
Msg 8169, Level 16, State 2, Line 1 Conversion failed when converting from a character string to uniqueidentifier.
使用带连字符的uniqueidentifier的相同查询工作正常,但数据不以该格式存储.
是否有另一种(有效的)方法将这些字符串转换为SQL中的uniqueidentifier. - 我不想在.Net代码中这样做.
如何在SQL Server 2005中使用SQL查询更改表中的列顺序?
我想使用SQL查询重新排列表中的列顺序.
我有一个代码是:
DECLARE @Script VARCHAR(MAX)
SELECT @Script = definition FROM manged.sys.all_sql_modules sq
where sq.object_id = (SELECT object_id from managed.sys.objects
Where type = 'P' and Name = 'usp_gen_data')
Declare @Pos int
SELECT @pos=CHARINDEX(CHAR(13)+CHAR(10),@script,7500)
PRINT SUBSTRING(@Script,1,@Pos)
PRINT SUBSTRING(@script,@pos,8000)
Run Code Online (Sandbox Code Playgroud)
脚本的长度大约是10,000个字符,因为我使用的print语句最多只能容纳8000个.所以我使用了两个打印语句.
问题是,当我有一个脚本,比如18000个字符,然后我习惯使用3个打印语句.
那么有没有办法可以根据脚本的长度设置打印语句的数量?
作为构建过程的一部分,我们在将代码部署到4个不同的环境时运行数据库更新脚本.此外,由于相同的查询将添加到,直到我们放下一个释放到生产它具有能够给定的数据库上运行多次.像这样:
IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[Table]'))
BEGIN
CREATE TABLE [Table]
(...)
END
Run Code Online (Sandbox Code Playgroud)
目前,我在部署/构建脚本中有一个create schema语句.我在哪里查询架构的存在?
是否有必要#在SQL Server中创建临时表之前使用?
例:
SELECT column1, column2, someInt, someVarChar
INTO ItemBack1
FROM table2
WHERE table2.ID = 7
Run Code Online (Sandbox Code Playgroud)
对于ItemBack1,是否需要使用#符号?
如果没有,那么#在创建临时表时有什么用?
在不同服务器上的两个不同数据库中有两个表,我需要加入它们以便进行少量查询.我有什么选择?我该怎么办?
我正在尝试对链接服务器运行SQL,但我得到了错误.
BEGIN DISTRIBUTED TRANSACTION
SELECT TOP 1 * FROM Sessions
OLE DB provider "SQLNCLI" for linked server "ASILIVE" returned message "No transaction is active.".
Msg 7391, Level 16, State 2, Line 3
The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "ASILIVE" was unable to begin a distributed transaction.
Run Code Online (Sandbox Code Playgroud)
提供程序返回了两个错误:
错误#1:
Number: $80040E14
Source: Microsoft OLE DB Provider for SQL Server
Description: OLE DB provider "SQLNCLI" for linked server "ASILIVE" returned message "No transaction is …Run Code Online (Sandbox Code Playgroud) 数据为空时出现问题,显示结果时出现警告.如何解决这个问题呢?.如果表中没有数据,如何将空数据更改为0?
这是我的代码: -
SELECT DISTINCT c.username AS assigner_officer,
d.description AS ticketcategory,
(SELECT Count(closed)
FROM ticket
WHERE assigned_to = c.user_id
AND closed IS NOT NULL
GROUP BY assigned_to)closedcases,
(SELECT Count(closed)
FROM ticket
WHERE assigned_to = c.user_id
AND closed IS NULL
GROUP BY assigned_to)opencases
FROM ticket a
JOIN ticketlog b
ON a.ticketid = b.ticketid
JOIN access c
ON a.assigned_to = c.user_id
JOIN ticket_category d
ON a.cat_code = d.id
JOIN lookup_department e
ON a.department_code = e.code
Run Code Online (Sandbox Code Playgroud)
结果如下: -
Warnings: --->
W (1): Warning: …Run Code Online (Sandbox Code Playgroud) 我的PHP/MS Sql Server 2005/win 2003应用程序偶尔变得非常反应迟钝,内存/ CPU使用率不会出现高峰.如果我尝试从sql management studio打开任何新连接,那么它只是挂在打开的连接对话框中.如何确定ms sql server 2005的活动连接总数
我正在运行数据导入(使用C#/ Linq),当然我正在尝试尽可能优化我的查询.为此,我正在使用SQL Server Profiler在数据库上运行跟踪,我的跟踪由我的SQL登录名过滤(这是一个可以唯一归因于我的数据导入过程的名称).
奇怪的是,我的大多数SQL语句都非常快:) - 很少有查询甚至突破1ms标记.但是我的所有查询之间的间隔是几行,其中EventClass是"审核登录"或"审核注销" - 并且"审核注销"的持续时间可以长达一分钟!
这与我在导入中使用事务的事实有关吗?如果是这样,有没有办法找到哪些是重要的查询,所以我可以清理它们?
sql-server-2005 ×10
sql ×6
sql-server ×5
database ×2
c# ×1
connection ×1
linq ×1
linq-to-sql ×1
msdtc ×1
schema ×1
t-sql ×1