小编Nic*_*yvV的帖子

如何在SQL作业中避免"警告:字符串或二进制数据将被截断",从而导致失败

我已经看过这个了,但是我见过和试过的解决方案都没有解决我的问题.

背景:使用SQL Server 2005

当我运行存储过程将数据插入表时,它工作正常.如果我获得SQL作业以在相同数据上运行相同的存储过程,则作业成功运行,但数据未插入到同一目标表中.

我试过了SET ansi_warnings OFF,但编译SQL时出错了,说

异构查询需要为连接设置ANSI_NULLS和ANSI_WARNINGS选项.这确保了一致的查询语义.启用这些选项,然后重新发出查询.

表模式:

[JobNo] [int] 
[ProductCode] [varchar](20) 
[ProductName] [varchar](200)
[ReportedAvailability] [varchar](100) 
[ReportedProductClean] [varchar](100)
[ReportedProductDate] [varchar](100) 
[ReportedProductPrice] [int] 
[ReportedCasesOrdered] [int] 
[AvailableYes] [int] 
[AvailableOOS] [int] 
[AvailableNotRanged] 
[ProductClean] [int] 
[ProductInDate] [int]
[ProductPrice] [int] 
[CasesOrdered] [int] 
[Include] [int] 
[Counter] [int] 
[UserId] [varchar](10) 
[Modified] [datetime] 
Run Code Online (Sandbox Code Playgroud)

在游标中,insert语句周围有一个try/catch,因此它逐个处理作业,如果有问题,我确切地知道它失败了哪个作业,因为有一个更新语句说"完成" "如果没关系,"如果没有失败".

我在此表中放入的所有数据都足够短,以适应需求列(即产品名称少于200个字符,INT值为5位或更少).

我收到警告,而不是错误,但我无法理解为什么它在作为SQL作业运行时失败了合法记录,而不是当它作为独立SP运行时.

目标表上没有触发器,INT列上有一些默认的0约束(但我不认为这是问题.同一SP中的其他表没有此问题)

提前致谢

sql-server stored-procedures sql-server-2005

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

预约老虎机无效

我有三张桌子.

表1.(预订)

        CREATE TABLE [dbo].[Booking](
            [Booking_Serno] [int] IDENTITY(1,1) NOT NULL,
            [Dt] [datetime] NULL,
            [start] [nvarchar](50) NULL,
            [todate] [nvarchar](50) NULL,
            [Service_Id] [int] NULL
        ) ON [PRIMARY]

INSERT [dbo].[Booking] ([Booking_Serno], [Dt], [start], [todate], [Service_Id]) VALUES (1, CAST(0x0000A6DA00000000 AS DateTime), N'9:30 AM', N'10:00 AM', 1)
        GO
Run Code Online (Sandbox Code Playgroud)

表2.(服务)

CREATE TABLE [dbo].[Service](
    [Service_Serno] [int] IDENTITY(1,1) NOT NULL,
    [Service_Duration] [int] NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Service] ON
INSERT [dbo].[Service] ([Service_Serno], [Service_Duration]) VALUES (1, 30)
Run Code Online (Sandbox Code Playgroud)

表3(规则)

CREATE TABLE [dbo].[Rules](
    [Rule_Serno] [int] IDENTITY(1,1) NOT NULL,
    [Start_Dt] …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures sql-server-2008

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

SQL数据透视表交叉应用于计数结果

我正在使用带有动态创建列的数据透视表来创建一个按月计算操作的报表.在动态查询中是一个涉及三列的CROSS APPLY.这导致我的总数增加了三倍.我目前正在攻击一个解决方案,我将计数除以3得到正确的答案.任何人都可以帮我提出一个更优雅的解决方案来解决这个问题吗?

编辑:我正在使用SQL Server 2008R2

鉴于此数据集(它实际上是一个视图,但我觉得在SO中重新创建整个模式并不明智):

CREATE TABLE vw_ActionsReport
    ([CID] int, [MitigationActionID] int, [Approved] int, [Status] varchar(11), [ChangedDate] datetime, [EntryDate] varchar(7), [STATE_ABBR] varchar(2), [STATE_NAME] varchar(11), [CENSUS_NAM] varchar(12), [CIS_NAME] varchar(21), [COUNTY_NAM] varchar(9), [CO_FIPS] int, [REGION] int, [ST_FIPS] int);

INSERT INTO vw_ActionsReport
    ([CID], [MitigationActionID], [Approved], [Status], [ChangedDate], [EntryDate], [STATE_ABBR], [STATE_NAME], [CENSUS_NAM], [CIS_NAME], [COUNTY_NAM], [CO_FIPS], [REGION], [ST_FIPS])
VALUES
    (090069, 5475, 1, 'Identified', '2012-11-27 16:21:27', '11_2012', 'CT', 'CONNECTICUT', 'OLD SAYBROOK', 'OLD SAYBROOK, TOWN OF', 'MIDDLESEX', 09007, 01, 09),
    (090069, 5476, 1, 'In Progress', '2012-11-27 …
Run Code Online (Sandbox Code Playgroud)

sql-server pivot sql-server-2008-r2

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

如何在SQL Server中对数量负数和正数进行排序

我有SQL Server.我有超过20000行使用SQL server.I有列Filed Name Amount.in Amount Filed Inserted negative和Positive Number.现在我想要Sort Amount字段负数和正数

示例如:

Entity  ExpenseTypeCode ExpenseType  Amount

  11       043            Hotel        5

  12       044            travel       23

  13       045            drink        55

  14       046            Dinner       23

  15       047            airline      556

  16       048            Hotel        -5
Run Code Online (Sandbox Code Playgroud)

我怎么喜欢超过30000 LINES.在我的表中我有费用类型但负值和正值我想要排序我的表像负和正序相同值

Entity ExpenseTypeCode ExpenseType Amount

  11       043            Hotel        5

  16       048            Hotel        -5 --> Want sort like this 

  12       044            travel       23

  13       045            drink        55

  14       046            Dinner       23

  15       047            airline      556
Run Code Online (Sandbox Code Playgroud)

我怎样才能对表格进行排序?

database sql-server

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

此查询的替代方式?

假设我们有一个名为Employee的表,列名为'Name':

+---------+
| Name    |
+---------+
| Jack    |
+---------+
| Paul    |
+---------+
| Jack    |
+---------+
Run Code Online (Sandbox Code Playgroud)

要拥有不同的名称,我们可以运行此查询:

Select DISTINCT Name 
from Employee
Run Code Online (Sandbox Code Playgroud)

有没有其他方法来检索不同的值?

sql sql-server

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