问题标签 [sql-server-2017]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - 在 SQL Server 2017 中解析 JSON(Clearbit API 调用)
我通过 Clearbit 提供程序使用 API 调用将一些数据拉入本地服务器上的数据库。使用 SQL Server 2017 解析数据一切正常,直到遇到问题。
为了便于理解,我将直接上示例。
这是 JSON 格式的 API 调用输出示例
如果您查看此处的示例,您会看到"domainAliases": [...]
这是我仍然需要解析的 JSON 的一部分。
这是我已经拥有的 SQL 解析查询:
我希望将此数据(“domainAliases”)作为上层查询中的数据存储在其他表中(我知道我已经拥有的解析查询只是一个 SELECT 查询,但我也有一个 UPDATE 版本的查询)。
这是一个示例图片,展示了新表中成品的外观,相同的数据库。左列称为Company Name
,第二列称为Domain Aliases
:
现在JSON数据存储在哪里?我将它存储在一个名为tablename: 的列中,所有这些都存储在一个名为. 数据类型是.JSONData
Domains
Domainbank
JSONData
nvarchar(max)
我需要按公司名称对数据进行分组,并且在公司名称旁边应该有别名域,就像图片示例所示。现在请记住,我将针对 10k+JSONData
秒运行此查询,并且要创建的新表将非常大,但只要它全部按公司名称和所有别名域分组,它应该是好的。一些JSONData
s 没有以正确的格式返回 API 调用,因为他们要么没有找到数据,要么出现了其他问题,所以如果查询在 the 下找不到任何内容,"domainAliases": [...]
或者如果它甚至没有找到,"domainAliases": [...]
那么我不不需要公司出现在新表上。
所以简短的回顾一下:让我们做一个新表(我们称之为AliasDomains
),找到下面的数据"domainAliases": [...]
也拉出公司名称JSON_VALUE(JSONData,'$.name') AS CompanyName
,将数据存储在新表中,如帖子中较高的图片示例,然后分组CompanyName
。
sparql - Syntax to query for optional relationships in Microsoft SQL Server 2017 Graph Database?
I want to select optional relationships in sql-server-2017-graph. Similar to optional
in sparql e.g.:
from https://www.w3.org/2001/sw/DataAccess/rq23/#OptionalMatching.
And similar to LEFT JOIN
in normal sql; e.g.:
Is there an easier way via MATCH
?
The documentation of MATCH
describes no 'optional' construct and the remarks state:
OR
andNOT
operators are not supported in theMATCH
pattern.MATCH
can be combined with other expressions usingAND
in theWHERE
clause. However, combining it with other expressions usingOR
orNOT
is not supported.
graph - 在匹配子句中使用视图和表值函数作为节点或边表
我喜欢在子句中使用表值函数,就像使用表一样。有没有办法做到这一点?MATCH
Node
对表值函数的需求
Node
将表值函数或视图用作表可以有多种用例。例如我的如下。
我有Node
包含NVarChar(max)
要搜索文字文本的字段的表。我只需要相等搜索而不需要全文搜索,所以我选择在文本字段的哈希值上使用索引。正如Remus Rusanu在他对SQL server 的回答中所建议的那样——值得索引大字符串键吗?和https://www.brentozar.com/archive/2013/05/indexing-wide-keys-in-sql-server/。表值函数使用CHECKSUM
索引处理;看消息 207 无效的列名 $node_id 用于内联表值函数中的伪列。
示例数据定义
[TagsByName]
返回https://stackoverflow.com/a/45565410/814206建议$node_id
的别名。但是,实际表包含另外两个我不知道如何导出的内部列。NodeId
Node
所需查询
我想查询类似这样的数据库:
但是,这会导致错误1 :
我有办法做到这一点吗?
PS。有一些解决方法,但它们看起来不像MATCH
-query 那样优雅;特别是考虑到我的实际查询涉及匹配更多的关系和更多的字符串相等测试。我会将这些解决方法作为答案发布,并希望有人提出更好的主意。
1 这给出了视图和表之间非常具体的区别,用于SQL 中视图和表之间的差异;这仅在sql-server-2017中发生并且仅在使用 SQL Graph 时发生。
sql - 获取“您只能在包含的数据库中创建具有密码的用户。” 以 sa 身份登录时出错
刚刚得到一个简单的查询:
但是当我以 sa 身份登录时,我收到此错误:
但是当我以 Windows 凭据登录时,它运行良好。
我需要在sa帐户上设置什么吗?
谢谢!
sql-server - NAT 和端口转发后面的 Service Broker 导致“收到损坏的消息”错误
通过 SQL Server Service Broker 将消息从一台机器发送到另一台机器。
发件人- Windows Server 2012 R2 和 SQL Server 2014 12.0.4213.0 Standard over NAT,具有从公共 IP:端口到本地 SQL Server IP:端口的 Service Broker 端口转发。例如,假设端口是
26223
并且它转发到 SQL Server4022
。Receiver - CentOS 7 和 SQL Server 2017 RC2 Express 作为 Web 服务器,为 Service Broker 打开了相同的特定端口。(更新到最新的 SQL Server CU - 14.0.3030.27 没有帮助)
我从 Sender 向 Receiver 发送消息,首先在错误的算法中sys.transmission_queue
出错,然后我发现我在发送者和接收者的端点上有不同的加密密钥算法,并更改了接收者端点密钥加密算法以匹配发送者的。
之后,我发送的消息出现sys.transmission_queue
了另一个错误 -Service Broker/Database Mirroring network protocol error occurred.
在 SQL Profiler 中,我找到了更多详细信息:
Broker:Corrupted Message - 收到损坏的消息。二进制消息前导码格式错误。
在 Receiver 端,SQL Profiler 显示:
审计代理登录:4 - 协商失败 - 接收数据时出错:'996(重叠 I/O 事件未处于信号状态。)'。
审计代理登录:5 - 身份验证失败
有时我在接收方也遇到了这个错误,除了以前的:
审计代理登录:4 - 协商失败 - 接收数据时出错:'24(程序发出命令,但命令长度不正确。)'。
对于该实例,我只有一条消息sys.transmission_queue
在发件人端等待。
更新: 我使用了ssbdiagnose实用程序,它是这样说的:
D 29835 MainServer MainDatabase Messages on conversation handle 13c07ab1-6b8d-e711-80c5-002590cb2a25 (conversation id 3a7d0dd0-c957-4fe8-a98e-1cb56713023c) from service sbSenderService to service sbReceiverService cannot be transmitted dues to the following problem: Service Broker/Database Mirroring network protocol error occurred.
An internal exception occurred: No such host is known
D 29933 WebServer WebDatabase The routing address TCP://[NAT ip address was here]:26223 for service sbSenderService does not match any of the IP addresses for MainServer
An internal exception occurred: Value cannot be null.
Parameter name: value
An internal exception occurred: No such host is known
P 29945 Cannot parse the routing address: unknown
因此,新的错误出现了:服务 sbSenderService 的路由地址 TCP://[NAT ip address was here]:26223 与 MainServer 的任何 IP 地址都不匹配
据我了解,我的 MainServer(发件人)不知道 TCP 标头中的 NAT IP 地址并标记 TCP 包格式错误,对吗?如何解决?
UPDATE2:我们在服务器之间设置了 VPN 隧道,同样的错误仍然存在。测试 CentOS 服务器打开了所有端口,没有 Selinux。现在我假设 Service Broker 不能在 CentOS 和 Windows 之间工作。
UPDATE3:在 CentOS 上更新到最新的 SQL Server CU - 14.0.3030.27 没有帮助
sql-server-2017 - 如何在 Linux 上以单用户模式/masteronly 恢复模式启动 SQL Server 2017?
如何在 Linux 上以单用户模式/masteronly 恢复模式启动 SQL Server 2017?
这个问题背后的场景是我们可以将 tempdb 文件移动到新的文件系统。如果我指定了错误的文件系统并在 linux 上重新启动 SQL Server 会怎样。SQL Server 将关闭。在这种情况下如何更改系统目录中的 tempdb 位置?
sql-server - SQL SERVER MANAGEMENT STUDIO 17 - 无法连接到 sqlserver
我正在使用 Windows 身份验证进行连接,并显示以下错误消息。
TITLE: 连接到服务器
------------------无法连接到 DESKTOP-7I87M3E\MSSQLEXPRESS16。
------------------------------
附加信息:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)(Microsoft SQL Server,错误:-1)“。
sql-server - 我可以防止 SQL Server Management Studio 2017 为脚本添加“脚本参数”前缀吗?
每当我从 SSMS 2017 中修改对象时,它总是包含一个“脚本参数”部分,如下所示:
有谁知道关闭它的设置?这不是一个表演停止者,但它让我很烦。
json - 多边形的 JSON 输出的 SQL 语法
我有一些 SQL Server 2017 表,我想使用 LeafletJS 在地图上显示点、线和区域。为此,我需要存储为 JSON 文件。
最新的 SQL Server 具有执行此操作的命令:
对于积分:
对于线路:
对于区域/多边形:
前两个工作正常,但最后一个让我难过。我有一个包含多边形的标准地理字段,但我无法弄清楚 JSON_QUERY 获取多边形所有顶点的坐标并将它们放入列表的语法。我认为这可能与 [WGS84Loc].STAsText 有关,但无法正确处理。
有人知道正确的 SQL 语法吗?