我有一个很长的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  
我需要以某种方式使用r句source("fileName")来执行r句.
注意:我试图使用SQL Server只是因为比我的个人计算机更好的机器性能.
提前致谢,
大卫
我创建了一个安全策略来在 SQL Server 2016 中实现行级安全性 (RLS)。在一个月中的某个特定时间可以应用安全策略。我打算编写一个启用或禁用安全策略的作业,但我没有得到禁用或启用它的 SQL 命令。
我知道我需要将 check_policy 设置为 OFF
CHECK_POLICY = { OFF } 
在视觉上,我可以通过右键单击安全策略使用 Sql Server Management Studio 来完成。
我已将postgresql数据库迁移到SQL Server 2016,其中我的所有文本列都具有TEXT数据类型.我意识到TEXT不应该在SQL Server中使用它.
是否有一个简单的查询来将所有文本列数据类型从SQL Server 更改TEXT为VARCHAR(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';
我有一个具有系统版本控制的表(临时表),但看不到可视化的设计环境。我这样做是因为我可以看到该SYSTEM_VERSIONING子句已被使用。我想暂时停止然后启用它。谁可以建议我?
我正在使用SSMS 2017,我的数据库是SQL Server 2016 Enterprise.创建数据库图时显示错误:
索引超出了数组的范围
怎么解决?先感谢您
我有一个表 (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'
结果如下:
预期的结果是:
StudentNumber   LastValue
Y1293926        0.00
它带回 4 个值而不是一个值的脚本有什么问题?
我在 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"
               }
            ]
         }
      ]
   }
}'
表结构附在这里:
我要插入FirstElement在数据表1,InnerElement在数据表2和InnerMostElement数据表3。
如何在 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
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"}}
]
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"}}
如何拆分字符串并获取NULL值而不是空字符串.
我有两种方法特别感兴趣STRING_SPLIT和XML.我希望这个查询:
SELECT * FROM STRING_SPLIT('a,b,,d', ',');
将返回第三行NULL而不是空字符串.有没有简单的方法来实现它,即使用特殊字符?我的意思是:
SELECT * FROM STRING_SPLIT('a,b,[null],d', ',') -- this, of course, wouldn't go
我希望我可以使用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));
从这里抓取代码:https://sqlperformance.com/2016/03/t-sql-queries/string-split
我在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)
现在', B',如果列注释的值为:,我想附加到列注释的值:
如果列注释的值为NULL,我想在列注释中添加/插入/添加'B'。
我尝试过的
UPDATE table_2 
SET notes=notes+', '+'B' 
WHERE col_percent = 5.8
但这会引发错误:
消息8152,级别16,状态13,行14
字符串或二进制数据将被截断。
当我尝试
UPDATE table_2 
SET notes=notes+', '+'B' 
WHERE col_percent = 9.9
它显示(1 row affected)但我看到相同的数据,并且列注释在第二行中仍为NULL。
我环顾四周,似乎将列注释的数据类型从nvarchar更改为varchar(50)将解决此问题。(我已经测试过)但是在实际情况下,我无法更改数据类型。
问题:如何在不更改列注释的数据类型的情况下执行此操作?
更新:声明注释列为[notes] [nvarchar] (400) …