标签: sql-server-2016

TSQL 格式 SSN/TIN (SQL Server 2016+)

当美国 SSN/TIN字符串看起来有效时(其中有效 = 9 位数字),我需要使用破折号对其进行格式化
,否则返回字段中的内容(带前导 0)。

123456789应格式化为123-45-6789
并3456789格式化为003-45-6789

有人能告诉我为什么这段代码不起作用吗?

Declare @TaxIDNum VarChar(11)
Set @TaxIDNum = '3456789'
Set @TaxIDNum = Right('0000'+@TaxIDNum,9)
Set @TaxIDNum = 
  CASE @TaxIDNum WHEN Len(@TaxIDNum)=9 THEN 
    CASE @TaxIDNum 
    WHEN IsNumeric(@TaxIDNum) 
    THEN Left(@TaxIDNum,3)+'-'+Right(Left(@TaxIDNum,5),2)+'-'+Right(@TaxIDNum,4) 
    ELSE @TaxIDNum END  -- return existing value
  ELSE @TaxIDNum END    -- return existing value
select @TaxIDNum, len(@TaxIDNum) as Length
Run Code Online (Sandbox Code Playgroud)

我在“=9”中的等号上收到红色波浪线错误:(
错误文本是:“'='附近的语法不正确。”)

任何既能与 select 或 set 配合使用又能解决问题的解决方案都是受欢迎的。


感谢@Larnu 的提及Set @TaxIDNum=FORMAT(CONVERT(int,@TaxIDNum),'000-00-0000')

如果我有错误处理(我们的 SSvr 安装没有)我会使用 Format。但是,如果存在错误数据,它会以无法恢复的方式破坏我的查询。

Set @TaxIDNum=Replace('123-45-6789','-','')如果唯一的数据问题是某些行已经格式化,则确实可以避免错误。

sql t-sql sql-server sql-server-2016

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

如何使用SQL将事件属性访问流量日志中的源?

我正在尝试将事件归因于流量日志中的源.对于任何半精明的技术营销人员或网站管理员而言,这似乎是相当基本的领域,但我已经用Google搜索了一下,而且令人惊讶的是,似乎没有人覆盖这一点.

背景:我使用T-SQL,我们正在SQL Server上运行2016年我的事件日志(HAProxy的)是这个样子,哪里RefererHost是'%mysite%'内部推荐,但也可以是其他任何外部推荐(入口).

User Agent ||     IP     ||  RefererHost ||     Event     ||   CreationDate
------------------------------------------------------------------------------
qwertyuiop || 99.99.99.9 ||   google.com ||   Home/View   || 2015-05-29 00:00:25
------------------------------------------------------------------------------
qwertyuiop || 99.99.99.9 ||   mysite/x   ||   Home/View   || 2015-05-29 00:00:27
------------------------------------------------------------------------------
abcdefghij || 11.11.11.1 ||   yahoo.com  ||   Home/View   || 2015-05-29 00:00:49
------------------------------------------------------------------------------
qwertyuiop || 99.99.99.9 ||   mysite/y   ||     Submit    || 2015-05-29 00:01:28
------------------------------------------------------------------------------
abcdefghij || 11.11.11.1 ||   mysite/p   ||   Photo/View  || 2015-05-29 00:02:04
------------------------------------------------------------------------------
abcdefghij || 11.11.11.1 ||   mysite/n   || …
Run Code Online (Sandbox Code Playgroud)

sql t-sql haproxy referer sql-server-2016

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

如何在移动报表发布器中创建 sql server 连接

我全新安装了 SQL 2016 RC1。报表生成器工作(用于分页报表)。但是我无法让 Mobile Report Publisher 创建从我的笔记本电脑到 sql 实例的连接。当我尝试连接到服务器时,出现“服务器错误”无法连接到远程服务器。我正在运行移动发布商的最新预览版 3。我已经为服务器地址尝试过 server/reportserver 和 server/reports,但没有运气。如果取消选中使用安全连接的选项,我会收到不同的错误。

有任何想法吗?

sql-server reporting-services sql-server-2016

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

R 在 SQL Server 2016 中

尝试执行 MSDN 提供的测试脚本以确保启用 R,但它抛出以下错误,

Msg 39023, Level 16, State 1, Procedure sp_execute_external_script, Line 1 [Batch Start Line 0]
'sp_execute_external_script' is disabled on this instance of SQL Server. Use sp_configure 'external scripts enabled' to enable it.
Msg 11536, Level 16, State 1, Line 1
EXECUTE statement failed because its WITH RESULT SETS clause specified 1 result set(s), but the statement only sent 0 result set(s) at run time.
Run Code Online (Sandbox Code Playgroud)

我已经确定我运行了

Exec sp_configure  'external scripts enabled', 1  
Run Code Online (Sandbox Code Playgroud)

使用覆盖重新配置

声明,然后我确保配置设置设置为 1,它是,并在检查和之后重新启动服务,但没有运气。

我还确保我不会加载任何其他 R 开放平台 …

sql r sql-server-2016

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

Azure SQL数据库缺少属性等

我一直在到处搜索,但似乎没有人遇到我的问题。我最近创建了一个Azure SQL数据库,但对弄清楚错误18456的处理方式却一无所获。我很多次看到“只需右键单击数据库,然后转到属性和安全性”,但是没有安全感。实际上,右键单击时似乎没有很多东西。我几乎对这一切一无所知,所以我尝试了很多事情。有一次我以为我需要使用样本冒险作品。但这不是。因此,如果有人帮助我,我将不胜感激。

[SSMS版本:16.4.1]

[Azure SQL数据库:服务器版本12]

我在SSMS(SQL Server Management Studio)中的属性菜单的图片 http://prnt.sc/cpwe3c ]

我的右键图片 http://prnt.sc/cpwh7y ]

sql ssms sql-server-2016 azure-sql-database

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

SSRS 2016本机双跳Windows身份验证

我自己和另一个管理员一直在尝试解决我们的新报告服务器上的双跳身份验证问题(报告以经过身份验证的用户身份运行,但无法委托给数据源并返回'NT Authority\Anonymous'身份验证错误)和我们似乎正在走向死胡同.这里有一些关于我们的设置.

我们在一台服务器上安装了SSRS 2016,我们的报告数据源位于另一台服务器上.我们已完成以下步骤以尝试启用身份验证

  1. 在报表服务器上设置组策略以启用凭据委派
  2. 确保报表服务器上的SSRS和MSSQLsrv为运行这两种服务的服务帐户设置了正确的SPN:
    • http/NetBIOS:80域\ servicename
    • http/FQDN.contoso.com:80 domain\servicename
    • mssqlsvc/FQDN.contoso.com:1433 domain\servicename
  3. 在服务帐户上启用Kerberos委派,并确保"帐户敏感且无法委派".框未选中
  4. 将标记切换到RSWindowsNegotiate/RSReportServer.config文件中的< >
  5. 重新启动了服务

尝试连接报表服务器上的数据源时,我们仍然收到错误,甚至通过浏览器连接到网页时也出现问题.奇怪的是,我们尝试在报表服务器上设置链接服务器,配置安全性以在执行命令的用户下运行,并且能够在链接服务器上成功执行双跳,但仍然不能从SSRS执行.

数据源是否需要在服务帐户下运行,还是可以在SQL的本地服务帐户下运行?服务帐户是否需要具有服务器所在的OU的委派权限?我可能还缺少哪些其他物品?

sql authentication reporting-services kerberos-delegation sql-server-2016

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

if中的if语句计算列规范

我正在尝试在计算列中构建if语句我想要完成的内容应该看起来像这样但是这是更多的伪代码:SalePrice-Cost-(if(isConsigned = 1 Then Payout else 0))

我怎么做这个,我可以在计算列内使用if语句,还是应该是其他的?

t-sql sql-server sql-server-2016

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

如何将行更新时间和行更新用户添加到表中?

我有一个表创建日期和创建用户字段定义似乎工作.

但是我在创建一个功能正常的行更新日期时间和行更新字段时遇到了困难.

我希望字段如何工作:当有人在表中更新记录时,仅记录正在更新的记录的日期/时间和用户名.

这是我失败的触发器创建语法,我错误地改编自Stack Overflow上的答案:

我应该注意,我不明白"插入"表在许多其他例子中的来源.也不是为什么它和内部联合起作用.

CREATE TRIGGER mkt.Update_tbl_fTesting
  ON mkt.tbl_fTesting
  FOR UPDATE
AS

BEGIN
  SET NOCOUNT ON;

  UPDATE mkt.tbl_fTesting
    SET RowUpdateDateTime = GetDate()
      , RowUpdateBy = coalesce(SUSER_SNAME(), '?')
    FROM mkt.tbl_fTesting
    INNER JOIN inserted
    ON tbl_fTesting.tbl_fTestingIdentity = inserted.ID;
END
GO
Run Code Online (Sandbox Code Playgroud)

执行触发器创建语法的错误是:

列名称"ID"无效

这是我的预期表创建语法:

USE [ObscuredDatabase]
GO

DROP TABLE [mkt].[tbl_fTesting]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [mkt].[tbl_fTesting](
    [tbl_TestingIdentity] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
  [Produce] [nvarchar] (25) NOT NULL,
  [Color] [nvarchar] (25) NOT …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2016

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

SQL Server 2017问题与日期时间数据类型

我有一个简单的表,该表由5条记录(以毫秒为单位)组成。我将数据库从2016升级到2017 SQL Server时遇到了问题。 此处附有两个图像,用于比较2016和2017 SQL Server结果的结果。我不明白为什么会在2017年出现这种不良行为。

这是2017 SQL Server中的错误吗??

在这两种情况下,表列数据类型在这两个日期时间数据类型中都是相同的。

SQL Server 2016输出

SQL Server 2017输出

这是创建表查询。

    USE [Test]
    GO

    CREATE TABLE [dbo].[TestVisionBot3](
        [FileId] [varchar](50) NULL,
        [OrgId] [nchar](10) NOT NULL,
        [ProjectId] [varchar](50) NULL,
        [CreatedAt] [datetime] NULL,
        [LockedUserid] [nvarchar](50) NULL
    ) ON [PRIMARY]
    GO
Run Code Online (Sandbox Code Playgroud)

这也是示例数据。

    1a  1           2a  2018-04-29 10:30:30.010 test
    3a  1           2a  2018-04-29 10:30:30.553 test
    2a  1           2a  2018-04-29 10:30:30.557 test
    4a  1           2a  2018-04-29 10:30:30.560 test
    5a  1           2a  2018-04-29 10:30:30.563 test
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2016 sql-server-2017

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

修剪String的一部分

先感谢您.

我有一张长柱的表.

我只需要从列中获取名称.

这是列名:

QSTY-IOM-HFVNBJGYG | Mobile #: 9876541323 | CUSTOMER NAME: MNOP UNIPOUYTREA POIUY | INVOICE DATE:02/28/18 | EMP#: 101466 | EMPLOYEE NAME: ANGELINA CASIANO
Run Code Online (Sandbox Code Playgroud)

我只需要从此列中获取客户名称.我尝试了Charindex并且它正在显示错误消息

传递给LEFT或SUBSTRING函数的长度参数无效.

输出:

MNOP UNIPOUYTREA POIUY
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2016

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