我有类似于下面的表,其中有一对多映射
DECLARE @T1 TABLE(RootId int, [Name] varchar(50))
DECLARE @T2 TABLE(Id int,RootId int, Category varchar(50))
INSERT INTO @T1
VALUES(1,'Some Name 12121'),(2,'Some Name 343434')
INSERT INTO @T2
VALUES(100,1,'Category 3333'),
(101,1,'Category 2222'),
(102,1,'Category 4444'),
(103,1,'Category 5555'),
(104,2,'Category 1111'),
(105,2,'Category 77777')
Run Code Online (Sandbox Code Playgroud)
我期望编写查询,以便它生成如下格式的 json,其中包含项目和子数组
[
{
"item": {
"rootId": 1,
"name": "Some Name 12121",
"sub": [
{
"id": 100,
"category": "Category 3333"
},
{
"id": 101,
"category": "Category 2222"
}
]
}
}
]
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下但无法达到预期的输出
SELECT T1.RootId,T1.Name,T2.Id AS [Sub.Id],T2.Category as [Sub.Category]
FROM @T1 T1
INNER …Run Code Online (Sandbox Code Playgroud) 有没有人想出如何sp_execute_external_script在SQL Management Studio结果窗口或消息窗口或弹出窗口中使用返回绘图的位置渲染绘图?我能够将一个绘图输出到文件系统,但这并不理想.
下面是我如何得到输出到文件系统的图.
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N' trellis.device(device="png", filename="c:/output/HistPlot.png");
myHist=histogram(~col1, data=InputDataSet);
print(myHist)'
, @input_data_1 = N'SELECT col1, col2 from ds.dbo.[sample]'
Run Code Online (Sandbox Code Playgroud) 我收到一个错误:
若要继续,请为SQL Server 2016 CTP3.2安装Microsoft System CLR类型
在安装SQL 2016 CTP 3.2期间.从哪里可以下载SQL Server 2016 CTP3.2的CLR类型?
我正在尝试测试新的SSRS 2016功能,这是我到目前为止所拥有的:
我一直在尝试使用预定的数据,但我想提取一些我熟悉的数据.当我尝试连接到服务器(localhost/reports)时,由于"服务器不支持移动报告",我收到服务器错误.
有什么我需要配置来启用它吗?
提前致谢
我们有一个存储过程,它返回属于地理空间区域("地理位置")的所有记录.它使用CTE(带),一些联合,一些内连接并将数据作为XML返回; 没有争议或前沿,但也不是微不足道的.
这个存储过程在SQL Server 2008上已经很好地服务了很多年.它在相对较慢的服务器上运行1秒钟.我们刚刚在具有大量内存和超快速SDD的超高速服务器上迁移到SQL Server 2016.
整个数据库和相关应用程序在这台新服务器上运行得非常快,我们对它非常满意.但是,这一个存储过程在16秒而不是1秒内运行 - 完全相同的参数和完全相同的数据集.
我们更新了此数据库的索引和统计信息.我们还将数据库的兼容级别从100更改为130.
有意思的是,我重写了存储过程以使用临时表和"插入"而不是使用CTE.这使得时间从16秒降低到4秒.
执行计划没有提供任何关于瓶颈可能存在的明显见解.
我们有点卡住了想法.接下来我们该怎么办?提前致谢.
-
我现在花在这个问题上的时间比我承认的要多.我已将存储过程归结为以下查询以演示此问题.
drop table #T
declare @viewport sys.geography=convert(sys.geography,0xE610000001041700000000CE08C22D7740C002370B7670F4624000CE08C22D7740C002378B5976F4624000CE08C22D7740C003370B3D7CF4624000CE08C22D7740C003378B2082F4624000CE08C22D7740C003370B0488F4624000CE08C22D7740C004378BE78DF4624000CE08C22D7740C004370BCB93F4624000CE08C22D7740C004378BAE99F4624000CE08C22D7740C005370B929FF4624000CE08C22D7740C005378B75A5F4624000CE08C22D7740C005370B59ABF462406F22B7698E7640C005370B59ABF462406F22B7698E7640C005378B75A5F462406F22B7698E7640C005370B929FF462406F22B7698E7640C004378BAE99F462406F22B7698E7640C004370BCB93F462406F22B7698E7640C004378BE78DF462406F22B7698E7640C003370B0488F462406F22B7698E7640C003378B2082F462406F22B7698E7640C003370B3D7CF462406F22B7698E7640C002378B5976F462406F22B7698E7640C002370B7670F4624000CE08C22D7740C002370B7670F4624001000000020000000001000000FFFFFFFF0000000003)
declare @outputControlParameter nvarchar(max) = 'a value passed in through a parameter to the stored that controls the nature of data to return. This is not the solution you are looking for'
create table #T
(value int)
insert into #T
select 136561 union
select 16482 -- These values are sourced from parameters into the stored proc
select …Run Code Online (Sandbox Code Playgroud) performance stored-procedures common-table-expression sql-server-2008 sql-server-2016
我最近为我的项目安装了Microsoft SQL Server Express,我能够使用SQL Server Management Studio连接到该实例,一切正常.然后我意识到我需要开发人员版本以我想要的方式导入数据,所以我试图删除Express版本,我从微软的网站上安装了Developer Edition.
我尝试首先连接到SSMS中的开发人员实例[computer name]\MSSQLSERVER([computer name]\SQLEXPRESS之前已经工作过)但是没有用.然后我尝试了许多其他的事情,包括更新和重新安装SSMS和开发人员实例,以及使用安装中心修复实例.
当我查看SSMS上的本地服务器组时,我看到默认的一个只是我的计算机名称,我看到了[computer name]\sqlexpress,但是我看不到具有开发者版本的实例名称的那个(应该是[computer name]\mssqlserver,对吧?).连接快递版本也不再起作用,我认为是因为我尝试卸载它.连接到默认工作,但它不是开发人员(我知道从尝试导入数据).
但是,当我查看服务器配置管理器时,它会将"SQL Server(MSSQLSERVER)"显示为正在运行的服务,但SSMS拒绝识别它.
我是初学者,所以很有可能我错过了一些非常明显的东西.我也不确定窗口上的"立即连接"按钮说"安装已成功完成",它将带您进入命令行窗口,以及是否与此有关.当我安装快递时,我真的不记得用它做任何事情.
任何帮助表示赞赏.谢谢!
SQL Server 2016中的SQL Server配置管理器在哪里?
它不在SQL Server 2016的菜单组下.
(我安装了Developer Edition)
我收到来自多个天线的每日txt数据文件.文件的命名约定是:
独特的天线ID +年+月+日+随机3位数
我解析了文件名并创建了一个像这样的表:
AntennaID fileyear filemonth fileday filenumber filename
0000 2016 09 22 459 000020160922459.txt
0000 2016 09 21 981 000020160921981.txt
0000 2016 09 20 762 000020160920762.txt
0001 2016 09 22 635 000120160922635.txt
.
.
.
etc. (200k rows)
Run Code Online (Sandbox Code Playgroud)
有时天线发送的文件多于1个或根本没有文件.如果发送的文件超过1,则唯一的3位数文件编号会区分文件,但我正在尝试查找未发送文件的日期.
我已经尝试了几个groupby语句来比较给定月份的数据文件数量,看看它是否与那个月的天数相匹配 - 但问题是有时候天线每天发送超过1个文件,这可能是人为的如果我们只是比较计数,则弥补"遗失"文件.
我正在寻找一种更健壮的方法来查找丢失文件的日期或日期范围.我已经查看了Partition和Over函数,感觉可能存在潜力,但我不确定如何使用它们,因为我对SQL很新.
我正在使用Microsoft SQL Server 2016
sql sql-server missing-data gaps-and-islands sql-server-2016
我有一台带有固态硬盘的快速Dell Precision 7720笔记本电脑,除了Management Studio之外,我的所有应用程序加载速度非常快.我以前的笔记本电脑也有这个问题.
我已经阅读了很多关于此的讨论 - 特别是这个 - 但是这些解决方案都不适用于我.到达此屏幕需要13秒:
我正在运行Windows 10,以及以下SQL Server版本:
有没有人知道出了什么问题?我相信这最近才开始发生.
我在表中有一个json字段,其中包含如下数组: -
[
{
"ID": 11111,
"Name": "apple",
},
{
"ID": 22222,
"Name": "orange",
},
{
"ID": 333333,
"Name": "banana",
}
]
Run Code Online (Sandbox Code Playgroud)
我想将以下json数组追加/连接到这个: -
[
{
"ID": 44444,
"Name": "grape",
},
{
"ID": 55555,
"Name": "kiwi",
},
{
"ID": 66666,
"Name": "fig",
}
]
Run Code Online (Sandbox Code Playgroud)
所以我最终在表格字段中得到了这个: -
[
{
"ID": 11111,
"Name": "apple",
},
{
"ID": 22222,
"Name": "orange",
},
{
"ID": 333333,
"Name": "banana",
},
{
"ID": 44444,
"Name": "grape",
},
{
"ID": 55555,
"Name": "kiwi",
},
{
"ID": 66666, …Run Code Online (Sandbox Code Playgroud) sql-server-2016 ×10
sql-server ×6
sql ×5
azure ×1
json ×1
missing-data ×1
mobile ×1
performance ×1
r ×1
ssms ×1
t-sql ×1