标签: sql-server-2016

sp_execute_external_script调用R脚本文件

我有一个很长的R脚本文件,我想使用SQL Server R服务,阅读它的文档,我还没有看到任何使用的例子:sp_execute_external_script允许加载R脚本文件.所有示例都旨在使用嵌入在SQL语句中的简单r计算,例如以下示例:

DROP PROC IF EXISTS get_iris_dataset;  
go  
CREATE PROC get_iris_dataset  
AS  
BEGIN  
EXEC   sp_execute_external_script  
   @language = N'R'  
 , @script = N'iris_data <- iris;'  
 , @input_data_1 = N''  
 , @output_data_1_name = N'iris_data'  
 WITH RESULT SETS (("Sepal.Length" float not null,   
       "Sepal.Width" float not null,  
    "Petal.Length" float not null,   
    "Petal.Width" float not null, "Species" varchar(100)));  
END;  
go  
Run Code Online (Sandbox Code Playgroud)

我需要以某种方式使用r句source("fileName")来执行r句.

注意:我试图使用SQL Server只是因为比我的个人计算机更好的机器性能.

提前致谢,

大卫

r sql-server-2016

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

在 SQL Server 中启用禁用安全策略

我创建了一个安全策略来在 SQL Server 2016 中实现行级安全性 (RLS)。在一个月中的某个特定时间可以应用安全策略。我打算编写一个启用或禁用安全策略的作业,但我没有得到禁用或启用它的 SQL 命令。

我知道我需要将 check_policy 设置为 OFF

CHECK_POLICY = { OFF } 
Run Code Online (Sandbox Code Playgroud)

在视觉上,我可以通过右键单击安全策略使用 Sql Server Management Studio 来完成。

sql-server sql-server-2016

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

在SQL Server中将所有表数据类型从text更改为varchar

我已将postgresql数据库迁移到SQL Server 2016,其中我的所有文本列都具有TEXT数据类型.我意识到TEXT不应该在SQL Server中使用它.

是否有一个简单的查询来将所有文本列数据类型从SQL Server 更改TEXTVARCHAR(MAX)

我找到了这个答案但受列名限制.我想立刻做到这一切.

 select 
     'alter table '||table_schema||'.'||table_name||' alter column'||column_name||' type text;'
 from 
     information_schema.columns
 where 
     table_schema = 'public'
     and column_name = 'description'
     and data_type = 'text';
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2016

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

如何在SQL Server 2016中的系统版本化的临时表上停止系统版本化?

我有一个具有系统版本控制的表(临时表),但看不到可视化的设计环境。我这样做是因为我可以看到该SYSTEM_VERSIONING子句已被使用。我想暂时停止然后启用它。谁可以建议我?

sql-server sql-server-2016

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

创建数据库图表SQL Server 2017时出现数组错误

我正在使用SSMS 2017,我的数据库是SQL Server 2016 Enterprise.创建数据库图时显示错误:

索引超出了数组的范围

怎么解决?先感谢您

ssms database-diagram sql-server-2016

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

Last_Value 返回多条记录

我有一个表 (SROEnquiry),如下面的快照所示:Data.jpg

我正在使用Last_Value()获取表上每个 StudentNumberstudent 的最后一个条目。StudentNumber 'Y1293926' 用作示例。

脚本如下:

SELECT DISTINCT(StudentNumber),
       LAST_VALUE(Arrears) OVER 
       (PARTITION BY StudentNumber ORDER BY RecordID) AS LastValue  
FROM SROEnquiry 
WHERE StudentNumber = 'Y1293926'
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此处输入图片说明

预期的结果是:

StudentNumber   LastValue
Y1293926        0.00
Run Code Online (Sandbox Code Playgroud)

它带回 4 个值而不是一个值的脚本有什么问题?

sql sql-server performance sql-server-2016

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

将嵌套的json数组插入sql server中的多个表中

我在 Sql 服务器中有以下 Json 对象。我想将此数据插入多个表及其关系(即外键):

DECLARE @JsonObject NVARCHAR(MAX) = N'{  
   "FirstElement":{  
      "Name":"ABC",
      "Location":"East US",
      "Region":"West US",
      "InnerElement":[
         {  
            "Name":"IE1",
            "Description":"IE1 Description",
            "Type":"Small",
            "InnerMostElement":[  
               {
                  "Key":"Name",
                  "Value":"IME1"
               },
                {
                  "Key":"AnotherProperty",
                  "Value":"Value1"
               }
            ]
         },
         {  
            "Name":"IE2",
            "Description":"IE2 Description",
            "Type":"Medium",
            "InnerMostElement":[ 
               {
                  "Key":"Name",
                  "Value":"IME2"
               },
                {
                  "Key":"Address",
                  "Value":"Xyz"
               }, 
               {
                  "Key":"Type",
                  "Value":"Simple"
               },
                {
                  "Key":"LastProperty",
                  "Value":"ValueX"
               }
            ]
         }
      ]
   }
}'
Run Code Online (Sandbox Code Playgroud)

表结构附在这里:

在此处输入图片说明

我要插入FirstElement在数据表1InnerElement在数据表2InnerMostElement数据表3

sql-server json sql-server-2016

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

在 SQL Server 2016 中打开 ndJSON 格式

如何在 SQL Server 2016 中打开 ndJSON 格式?我可以使用 JSON 格式打开,但对如何使用 ndJSON 一无所知。

SQL Server 中是否有特定功能可以执行此操作,还是有其他方法?

Declare @JSON varchar(max)

SELECT @JSON = BulkColumn
FROM OPENROWSET (BULK 'C:\examplepath\filename.JSON', SINGLE_CLOB) as j


Select * FROM OPENJSON(@JSON)
With (House varchar(50), 
      Car varchar(4000) '$.Attributes.Car',
      Door varchar(4000) '$.Attributes.Door',
      Bathroom varchar(4000) '$.Attributes.Bathroom' ,
      Basement varchar(4000) '$.Attributes.Basement' ,
      Attic varchar(4000) '$.Attributes.Attic'
      ) as Dataset
Go
Run Code Online (Sandbox Code Playgroud)

JSON 格式:

[

{"House":"Blue","Attributes":{"Car":"Camry","Door":"Small","Bathroom":"Medium","Basement":"Dark","Attic":"1"}},
{"House":"Red","Attributes":{"Car":"Thunderbird","Door":"Large","Bathroom":"Small","Basement":"Light","Attic":"4"}}

]
Run Code Online (Sandbox Code Playgroud)

ndJSON 格式:

{"House":"Blue","Attributes":{"Car":"Camry","Door":"Small","Bathroom":"Medium","Basement":"Dark","Attic":"1"}}
{"House":"Red","Attributes":{"Car":"Thunderbird","Door":"Large","Bathroom":"Small","Basement":"Light","Attic":"4"}}
Run Code Online (Sandbox Code Playgroud)

sql sql-server json sql-server-2016 ndjson

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

SQL拆分字符串并获取NULL值而不是空字符串

如何拆分字符串并获取NULL值而不是空字符串.

我有两种方法特别感兴趣STRING_SPLITXML.我希望这个查询:

SELECT * FROM STRING_SPLIT('a,b,,d', ',');
Run Code Online (Sandbox Code Playgroud)

将返回第三行NULL而不是空字符串.有没有简单的方法来实现它,即使用特殊字符?我的意思是:

SELECT * FROM STRING_SPLIT('a,b,[null],d', ',') -- this, of course, wouldn't go
Run Code Online (Sandbox Code Playgroud)

我希望我可以使用XML方法从字符串中提取NULL :

CREATE FUNCTION dbo.SplitStrings_XML
(
   @List       varchar(8000),
   @Delimiter  char(1)
)
RETURNS TABLE WITH SCHEMABINDING
AS
   RETURN (SELECT [value] = y.i.value('(./text())[1]', 'varchar(8000)')
      FROM (SELECT x = CONVERT(XML, '<i>' 
          + REPLACE(@List, @Delimiter, '</i><i>') 
          + '</i>').query('.')
      ) AS a CROSS APPLY x.nodes('i') AS y(i));
Run Code Online (Sandbox Code Playgroud)

从这里抓取代码:https://sqlperformance.com/2016/03/t-sql-queries/string-split

sql sql-server sql-server-2016

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

将字符串追加到nvarchar类型的列中的现有值

我在Microsoft SQL Server 2016 DB中有一个数据库表“ table_2”。

CREATE TABLE table_2
(
    [created_date] [date] NULL,
    [complete_hour] [int] NULL,
    [col_percent] [float] NULL,
    [notes] [nvarchar] (400)
)

INSERT INTO table_2
VALUES ('2017-05-31', 10, 5.8, 'A'),
       ('2019-06-14', 11, 9.9, NULL)
Run Code Online (Sandbox Code Playgroud)

现在', B',如果列注释的值为:,我想附加到列注释的值:

  1. NOT NULL和
  2. 不为空
  3. 不是'B'

如果列注释的值为NULL,我想在列注释中添加/插入/添加'B'。

我尝试过的

UPDATE table_2 
SET notes=notes+', '+'B' 
WHERE col_percent = 5.8
Run Code Online (Sandbox Code Playgroud)

但这会引发错误:

消息8152,级别16,状态13,行14
字符串或二进制数据将被截断。

当我尝试

UPDATE table_2 
SET notes=notes+', '+'B' 
WHERE col_percent = 9.9
Run Code Online (Sandbox Code Playgroud)

它显示(1 row affected)但我看到相同的数据,并且列注释在第二行中仍为NULL。

我环顾四周,似乎将列注释的数据类型从nvarchar更改为varchar(50)将解决此问题。(我已经测试过)但是在实际情况下,我无法更改数据类型。

问题:如何在不更改列注释的数据类型的情况下执行此操作?

更新:声明注释列为[notes] [nvarchar] (400) …

sql sql-server-2016

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