Tsql T-SQL存储过程错误

在SQL Server 2008 Management Studio中执行SP时出现以下错误: Msg 208, Level 16, State 6, Procedure BackupDB, Line 36 Invalid object name 'dbo.BackupDB'. use [Master]; go alter procedure dbo.BackupDB @dbName varchar(128), @path varchar(256) as begin

Tsql 在sql 2005中查找所有记录的列的值之和

我想在列权重中查找值的总和。我希望在其中一列name中用公共值标识的所有记录都有此总和。此外,我只想考虑列中有某个值的记录类型< /强>。br> 名称重量类型 1$12.00A 2$7.00b 2$7.00A 1$1.00 C 2$7.00b 1$1.00 C 2$7.00b 1$7.00b 2$7.00C 2$7.00b 我想要类型A和B的名称2的总权重。是否可以为此编写子查询,或者只能执行循环。Tnx SELECT Name, Type, SUM(Weight) FR

Tsql 仅通过存储过程强制插入

使用SQLServer2008,是否有一种方法只允许通过存储过程插入到表中,如果有,如何进行 编辑: 最好的办法可能是马丁·史密斯建议使用触发器。这个问题的直接答案是marc_的GRANT和DENY,尽管它不会限制某些用户帐户。拒绝表上的INSERT权限,并授予存储过程上的EXECUTE权限。只是不要授予任何数据库用户(以及您的“公共”角色)表上的INSERT权限 授予这些用户执行INSERT stored proc的权限—这样,他们可以调用stored proc,但不能直接将任何数据插入基础表

Tsql 查询以更新rowNum

有人能帮我更有效地编写这个查询吗 我有一个捕获TCP流量的表,我想更新一个名为RowNumForFlow的列,它是该流中IP数据包的序列号。下面的代码工作正常,但速度很慢 declare @FlowID int declare @LastRowNumInFlow int declare @counter1 int set @counter1 = 0 while (@counter1 < 1) BEGIN set @counter1 = @counter1 + 1 -- 1) se

Tsql 为什么SQL Server 2000将SELECT test.*和SELECT t.est.*处理为相同的?

我在SQL Server 2000中查询了一个查询,并在表名中间添加了一个周期: SELECT t.est.* FROM test 而不是: SELECT test.* FROM test 而查询仍能完美执行。即使是从测试中选择t.e.st.*也不会出现问题 我在SQL Server 2008中尝试了相同的查询,但查询失败(错误:列前缀与查询中使用的表名或别名不匹配)。出于纯粹的好奇,我一直在试图弄清楚SQLServer2000是如何处理表名的,这样就可以运行奶油手指式的查询,但到目前为止,

Tsql 用T-SQL解析地址

我试图弄明白如何使用T-SQL解析地址,我对T-SQL一窍不通。我的挑战是 我有一个名为“位置”的表,定义如下: - City [varchar(100)] - State [char(2)] - PostalCode [char(5)] 我的UI有一个文本框,用户可以在其中输入地址。这个地址可以是任何形式的(恶心,我知道)。不幸的是,我也无法更改此UI。无论如何,文本框的值被传递到负责解析地址的存储过程中。我需要获取用户输入的内容,并从与其输入相关联的位置表中获取PostalCode。就我个

Tsql ConsoleDate日期范围值

每隔一分钟,我都会合并SQL表中的值以压缩空间。如果我有一个具有以下值的表: UserId Value Date 1 2 10/08/2010 10:30:00 1 2 10/08/2010 10:30:10 1 2 10/08/2010 10:30:20 1 2 10/08/2010 10:30:30 1 2 10/08/2010 10:30:40 1 2 10/08/2010 10:3

Tsql 在SQL Server 2000中,日期和时间字段是否合并为日期时间?

我有两个字段,日期和时间,需要合并成一个日期时间字段。我见过这样做的函数,但它们似乎无法处理我的数据 日期字符(8):20051101 时间字符(4):1115 所需结果:日期时间代表2005年11月1日上午11:15 如何执行此操作?假设您的数据类型为int,则可以执行以下操作: declare @d as int declare @t as int set @d = 20051101 set @t = 1115 select CAST(cast(@d as varchar) as datet

Tsql 如何脱机查看SQL存储过程的调用树(而不实际创建它们)

我有一个巨大的SQL脚本,我需要分析。如果我能找到一种生成调用树的方法,那将非常有帮助;即,查看从特定过程调用的所有过程。这里是一个基于perl的示例, 但是我需要一个工具来分析文本文件.sql文件,而不是数据库中存储的过程。由于某些原因,我将无法在数据库中创建整个过程集并使用上述工具 如果您遇到任何具有此功能的ide/工具,请回复。可能没有太大帮助,因为它违反了您对脱机sql文件、基于文本的解析工具的要求,但希望将我过去成功使用的redgate工具扔到那里。它工作得很好,很好地映射出您的对象及

Tsql 为什么错误消息()总是空的?

我正在用SQLServer2008编写一个存储过程。问题是@ErrorMessage out参数始终为空。它似乎与ERROR_MESSAGE函数有关,因为当我去掉它时,消息的另一部分就会返回 我如何让它返回整个错误消息 -- Log transaction INSERT INTO Transactions (TxnId, TypeId, [Date], Amount) VALUES(@TxnId, @Type

Tsql 在T-SQL中,是否可以在给定行中找到包含NULL的列的名称(不知道所有列名)?

在T-SQL中是否可以编写一个适当的查询来反映此伪代码: SELECT {primary_key}, {column_name} FROM {table} WHERE {any column_name value} is NULL i、 e.不明确引用每个列名 听起来很简单,但我已经搜索了很多遍,什么也没找到。您必须使用动态sql来解决这个问题。我已经演示了如何做到这一点。 使用此sql,您可以选择一个表,并检查id=1的行中的列是否为null和主键。我在脚本的底部包括了一个测试表。如果没有主

Tsql 定义具有标识(1,1)关键字的列时是否需要添加NOTNULL?

按照我的理解,标识1,1意味着我们不会为该列提供任何数据。Sql Server将在以前创建的行的值中添加1 为什么不是这个 CREATE TABLE MyTable ( MyTableID INT IDENTITY(1, 1) PRIMARY KEY ) 而是这个 CREATE TABLE MyTable ( MyTableID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY ) 为什么要在这样一个列的定义中添加NOTNULL?这是否意味着Sql

Tsql T-SQL从行连接字符串

我试图通过连接另一个表中的行来更新临时表中的列 看看这个: DECLARE @Test VARCHAR(MAX); CREATE TABLE #Test ( EmployeeId INT ,Html VARCHAR(MAX) ); CREATE TABLE #EmployeeItems ( EmployeeId INT ,ItemNo INT ); INSERT INTO #EmployeeItems (EmployeeId, ItemNo) VALUE

Tsql 在T-SQL中将日期时间截断为秒(删除毫秒)

将包含毫秒的日期时间缩短为只有秒的最佳方法是什么 例如,2012-01-25 17:24:05.784到2012-01-25 17:24:05这将截断毫秒 declare @X datetime set @X = '2012-01-25 17:24:05.784' select convert(datetime, convert(char(19), @X, 126)) 或 以下功能的性能非常快,但它不仅可以消除毫秒,还可以舍入到分钟。看见http://msdn.microsoft.com/e

Tsql 存储过程创建问题

好的,我对存储过程知之甚少,但有人知道我如何将其作为SP编写。我认为它有点接近,但还不完全。基本上,我需要将什么粘贴到我的查询中才能创建它!:) 假设查询语句是正确的,并且您只需要一个SP结构,它将如下所示: 创建过程SP_名称 @变量1类型[输入/输出] 像 开始 --质疑 结束 //执行SP EXEC SP_名称“valueForVariable1” 希望这有帮助,明白了。只是不要命名provedure sp_executesql,而是命名为get_items或其他名称 新程序: CREAT

Tsql 使用行数优化SQL重复项的删除

我正在尝试从SQL表[InfoBucket]中删除冗余行,其中包含以下列: [ID] (varchar(16)), [column1], ... [columnN], [Speed] (bigint) ([column1…N]是从整数到长度不等的varchar()对象的数据类型。) 表中的某些行在[ID]和某些[column1…N]列中具有相同的值。 我将获取所有这些副本,并删除除具有最大[速度]的行以外的所有行 [InfoBucket]中大约有4亿行 为了将工作划分为可管理的块,我有另一个表

Tsql 我需要暂时;商店「;或将查询放入查询中,然后插入SQL Server 2005

所以我有两个表需要插入类似的数据。它们是不同应用程序访问的员工数据库。它们是: dbo_员工 dbo_ dbo_EmpUsers dbo_默认位置 因此,在dbo_Employees上,插入一行时,主键将自动创建。该列称为EmpID。总共有大约22个不同的列被添加到这些不同的表中。它们是像名字,姓氏,地址,电话,等等 我正在尝试创建一个脚本,在该脚本中,我可以获取一个变量列表,输入一次,然后运行该脚本,一次将其添加到4个表中(最终是一个网页,HR将输入信息并自行创建) 唯一给我带来麻烦的是d

TSQL:是否可以根据环境引用不同的数据库?

因此,我们有两个不同的数据库,存储过程需要引用另一个数据库来获取信息。我们通常会这样编写查询 select * from Mercury.dbo.MyTable a join Purchasing.dbo.OtherTable b on a.a = b.a 这对我们的生产和开发环境都很好,但最近我们将开发分为Dev/QA/ST,我们有不同版本的数据库来匹配环境 Example Purchasing, PurchasingQA, PurchasingST Mercury, MercuryQA,

TSQL查询以删除除一条记录外的所有重复记录

可能重复: 我有一个表,其中唯一的记录由复合键表示,例如(COL\u a,COL\u B) 我已使用以下查询检查并确认我的表中存在重复行: select COL_A, COL_B, COUNT(*) from MY_TABLE group by COL_A, COL_B having count(*) > 1 order by count(*) desc 现在,我想删除所有重复记录,但只保留一条 有人能用两个专栏来说明如何实现这一点吗 编辑: 假设表中只有列A和列B第一个解决方案, 它

Tsql 选择文字而不是列值时,查询速度会减慢

我正在进行一些修改,以改进1000年前编写的旧报表查询的性能。在将其修改为UNION ALL的过程中,我将其中一个列选择值替换为NULL。一旦我这样做,查询的执行时间就从1-2秒变为30秒。我看过这两个版本的实际执行计划,它们看起来完全相同。选择文本NULL可能比读取行值慢,这对我来说毫无意义。我还尝试显式地将NULL强制转换为前一种类型nvarchar,并选择而不是NULL,没有任何区别 查询和模式非常复杂,因此这可能需要一些问答疑难解答。选择NULL时减慢速度的列是底部附近的OtherCom

Tsql SQL Server扁平化层次结构表

我把这些数据放在一个递归表中,我想把这个层次结构信息展平。我通过查询完成了这一点,但我想知道是否有更好的方法来获得相同的结果 我拥有的数据: CREATE TABLE [dbo].[ElementosGeograficos_]( [IdElement] [int] IDENTITY(1,1) NOT NULL, [Name] [varchar](50) NOT NULL, [IdParentElement] [int] NULL, [IdLevel] [int]

Tsql 随机数

我已经能够随机日期与以下代码 DATEADD (day, CAST (RAND () * 365 as int), '2010-1-1') 我现在需要对1到7和1到126之间的数字进行计算 你能帮忙吗 SELECT 'Booking_' + Cast(Seed.Seed as varchar(25)) as BookingNo, DATEADD(day, ABS(CHECKSUM(NEWID()) % 800), '1 Jan 2010') as ArrivalDate, DA

Tsql 如何从存储过程返回要在C数据读取器中使用的临时表?

我有下面的存储过程T-SQL,我想用C代码中的command.ExecuteReader调用它,这样我就可以循环处理引发的任何错误,或者直接从SQL调用它 但是,我不知道如何返回临时表-我只返回了0 CREATE PROCEDURE validate AS BEGIN DECLARE @ValidationResults TABLE ROWNUM int, ATP varchar(max), ATD varchar(max), ERROR varchar(max) ) S

Tsql 如何根据最近的日期对字段内的数据进行排序

我在字段中有一个数据是“日期:03-21-13 12/13/14/15Date:04-21-13 39/12/34/14Date:04-19-13 19/45/65/12”。如何根据最近的日期在字段中对这些数据进行排序 应该是这样的 日期:04-21-13 39/12/34/14 日期:04-19-13 19/45/65/12 日期:03-21-13 12/13/14/15 因为您将其存储为文本,所以无法直接在列上正确排序(正如您发现的那样)。您需要拆分该列,然后在此列上排序。比如: Decl

Tsql 将SQL Server代理创建的文本文件附加到电子邮件

您好,我正在尝试了解如何设置一个SQL Server代理进程,该进程将拾取该步骤创建的文件并发送一封带有附件的电子邮件。第一步如下。我会在执行发送邮件后立即执行还是执行其他步骤?如果是这样,我该怎么做呢。目前,我只是拿起文件并通过电子邮件发送,但我们现在有多个客户/他们更频繁地需要该文件,因此我需要将其自动化 这方面的任何指导或帮助都将是非常好的 Declare @PeriodStart Datetime Declare @PeriodEnd Datetime SELECT @Peri

Tsql sql查询返回重复的值

我知道这是一个经常被问到的问题,但我自己也试图解决这个问题,但没能解决 我有两个表要连接,现在它从正确的表返回一个重复的值 select am.Journal ,am.EntryNumber ,am.PayInvoice ,am.PayDiscAllowed ,am.PayTaxAmtDisc ,am.PayGrossPayment ,tm.* from CshJnlPay am right join (select Invoice ,SUM(NetSalesValue) as NetSale

Tsql 用事实表中的登录名替换多个唯一ID

我有2个表,一个表有3个唯一的用户ID,所有这些都可以彼此不同。。。以及具有匹配用户登录名的事实表。(所有三个ID都可以是唯一的) 如果ID都是相同的,那么它只是一个内部连接,ID=ID并选择Login\u Name 如何引用事实表并输出与ID匹配的所有登录名?谢谢。我是TSQL新手,命名联接使其唯一,以便将它们拉回到SELECT语句是我所缺少的。 select table.id1, fk1.name , table.id2, fk2.name from table joi

Tsql 从多个表创建趋势报告

我的系统中有10个表,我需要从中获取一些计数。从一月份开始到现在,我们有10张表格,每个月一张,这意味着我们现在有10张。这些表包含客户。每个月以前的一些客户不再是客户(我们失去了一些),每个月我们都会获得一些客户。总的来说,我们正在增加我们的客户群,因此每个月的总客户数都将超过上个月。我想做一个趋势报告,显示每月有多少新客户加入我们的系统 我在SQL中有这些表,我想做的是从1月份的总数开始。然后我需要计算2月、3月、4月等的额外客户数。每月将与前一个月的总人数进行比较(将3月份的额外成员与3月

Tsql 包含开始日期和结束日期的查询

谁能帮我提个问题吗。我有桌子dbo.table。我写下了这个问题: select Name, Service, number, Dates, Country, Price from dbo.table where country is not NULL and Service in ('Incoming', 'Outgoing') and years =2014 and months=3 我得到的结果是: User1 Incoming 1111 03.07.2014 Bel

Tsql 返回具有外部联接的最新记录

我有一个返回以下数据的查询: F_id-P_id-Date ---------------------- 1001 - 0121 - 01/01/14 空-0122-空 1002 - 0123 - 01/06/14 1003 - 0123 - 01/04/14 空-0124-空 1004 - 0125 - 01/04/14 1005 - 0125 - 02/04/14 1006 - 0125 - 07/07/14 F_id是表单id,p_id是从另一个表外部连接的个人标识符,日期是表单输入的日

Tsql ssms隐藏(受影响的1行)

运行代码时,SSMS 2012正在将mydataset中每行的(受影响的1行)写入消息窗口。这并非意外(请参阅下面的详细信息),但是否有任何方法可以抑制这些消息,同时仍会收到重要的错误消息 我正在执行的代码使用游标在表中循环,并与以前的记录和操作进行一些相当复杂的比较,然后在将结果写入数据库之前在@Temp表中收集结果: WHILE @@FETCH_STATUS = 0 BEGIN --do stuff here, then collect the results INSERT @Tempta

Tsql TFS 2013看板板完成列(多个完整状态)

在TFS 2013中,Microsoft“修复”了一个允许将工作项状态映射到看板中“完成”状态的错误。 这项功能在我们公司被大量使用。有一份请愿书要把它带回来,但我认为它不会成功: 为了将TFS2012迁移到TFS2013,我想知道TFS 2012中自定义的“完成”状态列存储在数据库中的何处,以创建一个报告,其中显示哪个团队使用哪个工作项状态作为其“完成”状态 TFS2012看板板看起来是这样的(注意下拉列表): TFS2013看板板如下所示(注意:无下拉列表): 我确实有权访问TFS集合

Tsql ServiceBroker交叉数据库功能

我有以下设置:我在数据库“DB_a”上有一个服务代理。我调用存储的proc(SP_ADDINTOBROKER),它在管道中添加新行。在管道中添加一行的同时,调用另一个存储过程来检索该值(SP_GETFROMBROKER) 在这个存储过程中,我调用了一个从“DB_B”中检索值的函数 因此,我执行主存储过程(SP_ADDINTOBROKER),它调用SP_GETFROMBROKER。在SP_GETFROMBROKER中,我调用了一个调用DB_B的函数。我得到以下错误: 服务器主体“xxxxxx”无法

Tsql 返回具有where条件的空表上右外部联接的结果

因此,我试图从billing_monthly_verizon_charges_detail_archive返回12个月的数据,如果没有删除条件verizon.ITEM_DESCRIPTION“Payment Received”,我无法找到在没有数据时返回0的方法。我知道它为什么不返回任何数据,但如何让它在有条件的情况下为每个月的invoice_date表返回0,这是有数据时需要的 SELECT 'H. Verizon' AS category, CONVERT(VARCHAR(7), id.IN

Tsql 构造SQLWHERE子句以在Power查询中提取数据

基本上,我希望使用powerquery检索满足子句条件的数据行 我的电子表格中有400行查找值。 每行代表1个查找代码,例如,代码AAA1、AAB2等 假设我有一个select语句,我想用上面的代码构造where子句,这样我的end sql语句看起来就像 select * from MyTable where Conditions in ('AA1', 'AAB2') 到目前为止,我有这个 let Source = Excel.CurrentWorkbook(){[Name="Table5"]

Tsql 通过触发器同步一组表记录

我有一个来自现有产品的表(因此不可能更改模式),其模式类似于以下内容: objectId, typeId, value 我需要做的是基本上使几个typeid相互链接和同步。请参见下面的示例。每个将有大约35套3-4个链接的TypeID 我无法找到一种合理的方法来实现这一点,即性能、处理多行插入和防止触发器递归。有什么建议吗 例子 typeId 1、2和3应链接 INSERT INTO foo (objectId, typeId, value) VALUES (1, 1, 'bar') 应生成

Tsql T-SQL-如何在xml对象上使用GROUPBY

我已经编写了以下查询,我希望返回一个数据集,如查询中所述 质疑 预期结果 我收到一个错误,说 列“Audit.EventData.Data”在选择列表中无效,因为它 未包含在聚合函数或GROUP BY中 条款 如果我尝试对xml数据进行分组,则会出现另一个错误,即 GROUPBY子句中不允许使用XML方法 有办法解决这个问题吗 谢谢您可以将其添加到CTE中 ;with cte as ( SELECT RelatedRecordID AS [OrganisationID], Data.va

Tsql 如何将行转换为列

我有一个表格,其中包含类型、默认值、中断、CRG、会议、培训、专家、个人、特殊项目和系统中断水平排列。我需要把它放在一个饼图中,每个图表都是通过数据集按类别过滤的。我遇到的问题是,默认、中断、CRG、会议、培训、专家、个人、特殊项目和系统中断在水平布局中,我需要垂直布局。我尝试了Unpivot,但无法使其与9个字段一起工作。见下文 我需要的饼图的预期结果是:也许这就是您要找的 Declare @YourTable table (Type varchar(50),[Default] int,[

Tsql 如何加入多对多并保持相同的总数

我有两个数据集。左侧数据集具有相同的QuoteID、PolicyNumber,但可以是不同的年份、月份和PaidLoss。 第二个数据集具有不同的QuoteID、相同的PolicyNumber、不同的年份和不同的月份,也可以是多个类代码。 我需要将第一个数据集与第二个数据集合并,并保持相同的paidLoss。主要目标是每月保持相同的总支付损失。我知道这可能不太适合做生意,但这正是老板想看到的 这就是我迄今为止所尝试的: select cte1.PolicyN

Tsql 日期-时间表格模型中的起飞时间

我有一个日期维度表,表中有一个日期列,它有datekey、fulldatekey、date、DayofMonth、Dayofyear、month等。Date列只有yyyy-mm-dd,但当我将其放入表格多维数据集模型时,它会在其末尾附加一个12:00:00 a.M时间。我想知道如何删除时间,只保留日期。我正在ssdt中构建一个表格多维数据集,以启用bi编辑查询->转换选项卡->选择数据类型 这是我最好的猜测。根据 与以序列号形式存储日期的Microsoft Excel不同, PowerPivot

Tsql 子选择where子句标准

正在为一个类处理我的第一个ETL分配,并且需要转换的insert查询的帮助,特别是获取要插入到转换表中的authorID。我收到的数据是: 我的转换表有3列,Bookvarchar50、ISBNvarchar50和authorint。 正确的author值需要来自author表,该表具有: idint,FirstNamevarchar35,LastNamevarchar35 子选择上的where子句需要什么 INSERT INTO TRANSFORM.NewBook SELECT

Tsql 显式排除条件时遇到的除以零错误

我正在创建一些测试数据,这需要我计算一个百分比 在我的谓词中,我排除了可能导致被零除错误的任何记录,当我在该数据集上运行SQL查询时,一切都正常运行 生成的记录总数(所有组合):92345408 不包括被零除实例的记录总数:92141104 当我添加“符合用例1”条件时,查询仍然执行,没有错误。然而,当我也向谓词添加“用例2”时,我遇到了一个被零除的错误。我不明白这是怎么发生的,因为我排除了这种情况: WHERE CAST(m1.MoneyValue1 AS FLOAT) - CAST(m2.M

Tsql 调试模式下的SQL Server查询:查询表?

我有一个大型脚本,需要调试以捕获错误。脚本中有一个表声明为变量。一些t-sql在该表中插入了一个。我想在调试模式下从表中选择。我在屏幕上打开了locals窗口,但是我看不到那里的表的内容,只有变量本身,当代码执行在所需断点处停止时,我也不能从临时表变量中进行选择 有没有办法在调试模式下查询表?谢谢 为了调试,您可以用全局临时表tableName替换表变量@tableName 表变量和本地临时表tableName仅存在于定义它们的会话中,因此只能在该会话中查询。全局临时表可以从其他会话访问,并将一

为什么TSQL表分区似乎停止工作?

出于多种原因(主要是数据量),我们有5台MS-SQL(2017)分片服务器,用于分解任何单个服务器上的总体负载。其次,我们有一个按资产ID划分的实时表,用于存储实时数据。每个资产的数据包大约每2秒到达一次。每个数据包可以有300到12000个数据点 表分区和分片服务器工作得很好。但每隔一段时间,其中一台服务器似乎会停止使用该部分,这会导致死锁和超时,因为新数据会到达 我的问题是为什么会发生这种情况,是否有办法检查这种情况发生的时间或原因。我知道这就是问题所在,因为我可以将数据移动到暂存表,删除原

Tsql 调整sql的开始和结束日期

给定MS SQL Server 2016中的数据集 StoreID PurchaseID ShopID LocationID Starttime Endtime 1020 20200102 9856 0010 2020-01-08 09:08:53 2020-01-08 09:11:52 1021 20200102 9856 0020 2020-01-08 09:09:48 2020-01-08 09:11:52 这里StoreID

  1    2   3   4   5   6  ... 下一页 最后一页 共 116 页