我试图使用TSQL子字符串函数获取Guid字段的第一部分,如下所示
SELECT SUBSTRING(Guid, 1, 8) AS Gu FROM MyTable
Run Code Online (Sandbox Code Playgroud)
但我得到的只是这个错误.
参数数据类型uniqueidentifier对子字符串函数的参数1无效.
那么这里发生了什么?我应该首先将Guid视为纯字符串还是......?
提前致谢!
我需要一个SQL查询,按PlanDate每个ClientID 返回前两个计划.这是一个表,其中PlanID是PrimaryID,ClientID是一个foreignID.
这是我到目前为止 - >
SELECT *
FROM [dbo].[tblPlan]
WHERE [PlanID] IN (SELECT TOP (2) PlanID FROM [dbo].[tblPlan] ORDER BY [PlanDate] DESC)
Run Code Online (Sandbox Code Playgroud)
显然,这只返回2条记录,其中我实际上需要最多2条记录ClientID.
我想创建一个存储过程,它接受一串逗号分隔值,如"1,2,3,4",并将其拆分并使用这些数字在不同的表上运行查询.
所以在相同的存储过程中它会做类似的事情
select somefield from sometable where somefield = 1
select somefield from sometable where somefield = 2
select somefield from sometable where somefield = 3
select somefield from sometable where somefield = 4
Run Code Online (Sandbox Code Playgroud)
谢谢!
我编写了以下代码(sql clr存储过程),它将消息写入本地文件.当多个连接同时调用存储的proc时,会发生此问题.所以我使用了锁定语句.但这似乎没有任何区别?我在这做错了什么?
lock (SqlContext.Pipe)
{
StreamWriter sw = File.AppendText("C:\Date.txt");
int y = 50;
while (y != 0)
{
sw.WriteLine(DateTime.Now + " " + serverName + " -- " + jobId.ToString() );
System.Threading.Thread.Sleep(new Random().Next());
y = y - 1;
}
sw.Close();
}
Run Code Online (Sandbox Code Playgroud) 我有一个带有标识列的表,对于它的所有记录都增加了1,然后突然上周它开始以一种奇怪的方式递增.
例如:
身份 - 日期
31891 2010-02-27 09:47:41
39258 2010-02-27 13:13:03
41994 2010-02-27 13:43:56
45119 2010-02-27 14:44:43
45120 2010-02-27 14:51:33
45121 2010-02-27 15:01:12
63943 2010-02-27 19:38:24
63944 2010-02-27 20:14:11
73344 2010-02-27 22:06:35
78298 2010-02-27 22:54:43
124007 2010-02-28 07:02:51
130482 2010-02-28 07:35:34
130483 2010-02-28 08:05:02
144470 2010-02-28 10:11:57
164253 2010-02-28 11:30:00
254921 2010-02-28 16:59:51
254922 2010-02-28 17:06:28
Run Code Online (Sandbox Code Playgroud)
如果你看时间你可以看到插入之间的时间越长,增量就越高.我完全不知道为什么会这样.我不对表执行任何删除查询,因此不能删除行.
我有表,我插入数据与以下查询(从c#代码):
INSERT INTO [BazaZarzadzanie].[dbo].[Wycena]
([KlienciPortfeleKontaID]
,[WycenaData]
,[WycenaTyp]
,[WycenaWartosc]
,[WycenaWaluta]
,[WycenaUzytkownik]
,[WycenaUzytkownikData])
VALUES
(@varKlienciPortfeleKontaID
,@varWycenaData
,@varWycenaTyp
,@varWycenaWartosc
,@varWycenaWaluta
,@varWycenaUzytkownik
,@varWycenaUzytkownikData)
Run Code Online (Sandbox Code Playgroud)
表创建脚本如下所示:
CREATE TABLE [dbo].[Wycena](
[KlienciPortfeleKontaID] [int] NULL,
[WycenaData] [datetime] NULL,
[WycenaTyp] [int] NULL,
[InID] [int] NULL,
[WycenaIlosc] [decimal](18, 2) NULL,
[WycenaCena] [decimal](18, 2) NULL,
[WycenaWartosc] [decimal](18, 2) NULL,
[WycenaWaluta] [nvarchar](3) NULL,
[WycenaUzytkownik] [nvarchar](50) NULL,
[WycenaUzytkownikData] [datetime] NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
它还有几个外键,但我没有任何东西可以制作主键/唯一键.所以我想防止重复,我会去触发,因为知道一行是重复我实际上必须测试该行的每一个值(也许不是最后一列2)?该表有大约2mln行.
这是个好主意吗?或者,还有更好的方法?
下面是我创建的触发器(未测试是否有效):
CREATE TRIGGER [dbo].[trg_WycenaDuplicateCheck]
ON [dbo].[Wycena] FOR INSERT
AS
IF EXISTS(SELECT INSERTED.[KlienciPortfeleKontaID]
,INSERTED.[WycenaData]
,INSERTED.[WycenaTyp]
,INSERTED.[InID]
,INSERTED.[WycenaIlosc]
,INSERTED.[WycenaCena]
,INSERTED.[WycenaWartosc]
,INSERTED.[WycenaWaluta] …Run Code Online (Sandbox Code Playgroud) 有一段时间了,我们在新建的(基于VMWare的)SQL Server 2005数据库服务器上的传闻很慢.最近问题已经出现,我已经开始寻找问题的根本原因.
这是一个奇怪的部分:在我用作性能测试用例的存储过程中,执行速度的差异取决于我运行它的DB服务器.这是使用相同的数据库(mdf)和log(ldf)文件,从慢速服务器分离,复制和重新连接到快速服务器.这似乎不是(虚拟化)硬件问题:他的服务器速度是CPU容量的4倍,而速度是快速服务器的2倍.
据我所知,问题在于服务器的环境/配置(操作系统或SQL Server安装).但是,我检查了一堆变量(SQL Server配置选项,运行服务,磁盘碎片),发现没有什么能够对测试产生影响.
我应该看什么?我可以用什么工具来调查为什么会这样?
我正在尝试从.NET代码中删除SQL Server数据库.我已经尝试过使用SMO类,但得到一个例外,说数据库正在使用中.
然后我尝试执行一个查询(打开一个SqlConnection,执行一个SqlCommand),顺序如下:
ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)
(暂停)
DROP DATABASE foo
Run Code Online (Sandbox Code Playgroud)
但我仍然得到一个例外,说数据库正在使用中.
我该怎么做呢?(或者,SQL Server Management Studio如何实现Drop数据库并关闭现有连接?)
我从客户那里获得了一个包含500,000个用户更新的更新信息的大文本文件.但是,当我处理此文件时,我经常遇到SQL Server超时错误.
这是我在VB应用程序中遵循的处理数据的过程(通常):
DELETE * FROM tempTable)问题是我经常运行像UPDATE tempTable SET user_id = (SELECT user_id FROM myUsers WHERE external_id = tempTable.external_id这样的命令,这些命令经常超时.我已经尝试将时间超过10分钟,但它们仍然失败.现在,我意识到500k行是不容易操作的行数,但我认为据称能够处理数百万行的数据库应该能够很容易地处理500k.我是如何处理这些数据的?
请帮忙.任何和所有建议欢迎.
我的sql talble具有以下结构
F1 F2 F3 F4 F5
Group 1 2 3 4
Design 5 6 7 8
Run Code Online (Sandbox Code Playgroud)
现在我想阅读此内容并返回查询结果,如下所示,请帮忙
F1 Value
Group 1
Group 2
Group 3
Group 4
Design 5
Design 6
Design 7
Design 8
Run Code Online (Sandbox Code Playgroud) sql-server-2005 ×10
sql ×4
sql-server ×3
t-sql ×2
c# ×1
identity ×1
performance ×1
substring ×1
timeout ×1
triggers ×1