标签: sql-server-2017

需要SQL Server 2017多维模式

MS SQL Server 2017(开发人员版)已连接并在我的PC上运行。然而,当我想startdevelop在MS Visual Studio的2017年的过程,这是给我下面的错误:

You cannot deploy the model because the localhost deployment server is not running in multidimensional mode.
Run Code Online (Sandbox Code Playgroud)

我尝试重新安装具有其他功能的MS SQL Server,但是找不到此multidimensional option。我搜索了一些文章,他们在旧版本的MS VS中解决了这些问题,但是,它们在MS VS 2017中没有帮助。请提供一些建议。

sql sql-server sql-server-2017

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

如何在WHERE LIKE中为多个值使用SELECT语句

我试图从表中过滤出行,其中[Description]列包含另一个表中列表中的单词.

我已经走到这一步,然后意识到我根本不知道如何做到这一点:

SELECT 
  p.Description  --- a large amount of text
FROM
  Products p
WHERE 
  p.Description NOT LIKE 
(SELECT List.Word FROM List) --- pseudo code
Run Code Online (Sandbox Code Playgroud)

所以我需要类似的东西,NOT IN但实际上却是NOT LIKE.

如果没有我必须手动提取列表中的所有单词并执行NOT LIKE '%sofa%' AND NOT LIKE '%cushion%' AND NOT LIKE '%chair%'等等,这是否可能?

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

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

如何使用数组聚合、Join 或 Union 成平面 Json 对象?

我的数据看起来像:

客户

CustomerId  CustomerName CustomerEmail  
------------------------------------------
1           Ben          Ben@gmail.com
2           Robert       Robert@gmail.com
3           Paul         Paul@gmail.com
Run Code Online (Sandbox Code Playgroud)

客户联系人

CustomerContactId  CustomerId  ContactName   ContactEmail
----------------------------------------------------------
99                 1           Lisa          Lisa@msn.com
98                 3           Jane          Jane@msn.com
97                 3           Wendy         Wendy@msn.com
Run Code Online (Sandbox Code Playgroud)

这是我正在寻找的结果:

[
    {
        "CustomerId": 1,
        "Names": [ "Ben","Lisa" ],
        "Emails": [ "Ben@gmail.com","Lisa@msn.com" ]
    },
    {
        "CustomerId": 2,
        "Names": [ "Robert" ],
        "Emails": [ "Robert@gmail.com" ]
    },
    {
        "CustomerId": 3,
        "Names": [ "Paul","Jane","Wendy" ],
        "Emails": [ "Paul@gmail.com","Jane@msn.com","Wendy@msn.com" ]
    }
]
Run Code Online (Sandbox Code Playgroud)

我尝试过的: 我很尴尬地说我还没有接近:

CustomerId  CustomerName CustomerEmail  
------------------------------------------ …
Run Code Online (Sandbox Code Playgroud)

sql t-sql azure-sql-server sql-server-2017 for-json

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

string_split的结果顺序?

现在我发现了这个很棒的string_split()函数,然后我了解到输出行可能按任何顺序排列。不保证顺序与输入字符串中子字符串的顺序匹配。。这使得该功能对我来说毫无用处。

也许有解决方法吗?

编辑 -示例:

SELECT value FROM String_Split('b,a,c', ',')
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我希望按以下顺序得到结果:

value
------
b
a
c
Run Code Online (Sandbox Code Playgroud)

不过,根据微软的说法,这个订单并没有得到保证。那么我怎样才能准确地得到这个结果呢?

sql-server split sql-server-2016 azure-sql-database sql-server-2017

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

SQL Server 2017 STRING_AGG 排序依据

我在 Windows 上使用 SQL Server 2017 Microsoft SQL Server 2017 (RTM-GDR) (KB4583456) - 14.0.2037.2 (X64) 2020 年 11 月 2 日 19:19:59 版权所有 (C) 2017 Microsoft Corporation Developer Edition(64 位) 10 Pro 10.0(内部版本 19042:)。

我正在尝试对 STRING_AGG 函数的结果进行排序。

这很好用

SELECT STRING_AGG(Category,', ') AS Result
FROM LegacyReviews_Categories
Run Code Online (Sandbox Code Playgroud)

这给了我错误“Msg 102,Level 15,State 1,Line 1 '('附近的语法不正确。”

SELECT STRING_AGG(Category,', ') WITHIN GROUP ( ORDER BY Category ASC) AS Result
FROM LegacyReviews_Categories
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2017 string-agg

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

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
查看次数

SQL Server Management Studio 2017中DATETIME列的默认值

是否可以使用具有类型的列创建表DATETIME并为其提供默认值,例如CURRENT_TIMESTAMPGETDATE()?还有另一种方法吗?

SSMS 2017的屏幕截图

屏幕截图

sql-server sql-server-2017 ssms-2017

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

SSIS 从 2008R2 升级到 2017 - 连接到 OLEDB 数据源时脚本任务失败

我正在将数据仓库从 SQL Server 2008R2 升级到 2017。升级后,每个脚本任务在尝试连接到日志数据库时都会抛出相同的错误。

该任务通过 OLEDB 连接管理器连接到数据库,然后将一些元数据写入日志记录表。建立初始连接失败。我希望这是一个相当简单的调用错误,但我是一个 SQL 人员,而不是 VB 人员,而且我没有看到这个问题。

我发现这个问题,Missing library to reference OLEDB connection types,但脚本没有调用 AcquireConnection() 方法,所以我认为它不适用。或者如果是的话,我不知道如何。

这是通过故障点的代码。

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.Data.OleDb
Imports System.Collections
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper

<Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
  Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase

  Enum ScriptResults
    Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success
    Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
  End Enum

    Public Sub Main()
        Dim fireAgain As Boolean
        Dim pkgExecVar As Variables
        Dim cm As ConnectionManager
    Dim cmParam As IDTSConnectionManagerDatabaseParameters100
    Dim conn …
Run Code Online (Sandbox Code Playgroud)

vb.net sql-server ssis sql-server-2017 ssis-2017

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

授予用户创建新数据库的权限,但拒绝现有数据库的权限

I got a request from our developers that,

  • They need a new user that need rights to create new databases
  • Alter those but should not be able to access the existing ones.

What's best practice for this kind of access?

Grant dbcreator and deny access on existing ones or is there a better way?

sql-server sql-server-2017

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

打开跟踪标志 460 并不会给出更好的错误消息

我有一个大型插入查询,以错误结尾:

消息 8152,级别 16,状态 4,第 1 行
字符串或二进制数据将被截断

经过一番研究后,我尝试使用 TRACE FLAG 460,使用以下命令:

INSERT... 
VALUES...
OPTION (QUERYTRACEON 460);
Run Code Online (Sandbox Code Playgroud)

这给出了与之前相同的错误,因此我尝试使用以下命令在服务器级别打开该标志:

DBCC TRACEON(460, -1);
Run Code Online (Sandbox Code Playgroud)

同样,输出没有变化。但是当我检查 flagstatus 时,它给出了所有正确的信息:

DBCC TRACESTATUS(460);

TraceFlag   Status  Global  Session
460         1       1       0
Run Code Online (Sandbox Code Playgroud)

有人知道如何让 Trace Flag 460 工作吗?我的服务器信息如下:

Edition: Developer Edition (64-bit)
ProductVersion: 14.0.2037.2
ResourceLastUpdateDateTime: 2020-11-02 21:20:26.783
ResourceVersion: 14.00.2037
BuildClrVersion: v4.0.30319
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2017

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