我有一张桌子sql-server-2016:
CREATE TABLE #tempData (A int not null)
INSERT INTO #tempData VALUES (0);
GO
Run Code Online (Sandbox Code Playgroud)
现在我可以调用我的 R 脚本,将表作为输入数据(包括列名):
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
df <- InputDataSet
df$B <- 1L'
, @input_data_1 = N'SELECT * FROM #tempData'
, @output_data_1_name = N'df'
WITH RESULT SETS (
(A int not null, B int not null)
);
Run Code Online (Sandbox Code Playgroud)
返回:
A B
0 1
Run Code Online (Sandbox Code Playgroud)
正如预期的那样。但是我可以在不指定名称{A,B} 的情况下执行相同操作吗,即它将data.frame直接使用来自 的名称。
我刚刚在新工作站上全新安装了 VS2015 Update 2,并开始运行一些使用 SQL LocalDb 的集成测试。他们因以下原因而失败SqlException:
附加信息:本地数据库运行时:无法创建命名实例。
指定的 LocalDB 版本在此计算机上不可用。
我们使用的连接字符串是(并且以前使用 VS2013):
server=(localdb)\SystemTest;Integrated Security=true
Run Code Online (Sandbox Code Playgroud)
如您所见,这没有指定任何版本,实际上是在尝试连接到命名实例。
如果我跑sqllocaldb v我得到:
Microsoft SQL Server 2014 (12.0.2000.8)
Microsoft SQL Server 2016 Release Candidate 0 (RC0) (13.0.1100.286)
Run Code Online (Sandbox Code Playgroud)
我尝试手动创建和启动“SystemTest”实例,甚至指定版本,但两者似乎都导致抛出相同的 SqlException。
连接字符串语法是否已更改?我错过了什么?
更新:
如果我使用自动实例(现在在 SQL2014 及更高版本上命名为“MSSQLLocalDb”),代码工作得很好。比较这两个实例时,sqllocaldb i除了一个是自动创建之外,它们都是相同的。他们都在Running州内。所以看起来问题只发生在命名实例上。
尝试重命名表并使用它时遇到一个非常奇怪的问题。
我有一个名为oldTable的表并将其重命名为newTable。
我可以使用以下方法在此表上成功使用select:
SELECT * FROM database.dbo.newTable;
Run Code Online (Sandbox Code Playgroud)
但是当我尝试像这样使用更新时:
UPDATE database.dbo.newTable SET foo = bar where id = 1;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Msg 208, Level 16, State 1, Procedure archive, Line 4 [Batch Start Line 0]
Invalid object name 'oldTable'.
Run Code Online (Sandbox Code Playgroud)
看起来名称 oldTable 存储在某处,并通过某种引用在此处使用。尝试更新时,它同时发生在 ssms 和原始 php+sql 上。
任何人有任何想法?
我目前正在使用 Visual Studio 2015(在 BIDS 2008 中制作)更新我们所有的 ETL,并将它们重新部署到在 SQL Server 2016(最初是 2008R2)上运行的新报告服务器。
在更新其中一个 ETL 时,我收到此错误:
HRESULT 异常:0xC0202009 负载暂存表错误 [OLE DB 源 [129]]:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“无效的对象名称‘dbo.TimeSheets’。”。
这是我尝试过的:
我有一个 JSON 对象,其中一个属性的值很长。当我尝试使用 提取此值时JSON_VALUE(),它返回 null。
declare @json nvarchar(max) =
'
{
"AVeryLongValue": "Founded in 2008, Stack Overflow is the largest, most trusted online community for developers to learn, share their knowledge, and build their careers. More than 50 million professional and aspiring programmers visit Stack Overflow each month to help solve coding problems, develop new skills, and find job opportunities. Stack Overflow partners with businesses to help them understand, hire, engage, and enable the worlds developers. Our products …Run Code Online (Sandbox Code Playgroud) 考虑下表
我需要生成一个类别组 =“国家”的条形图。该图表应仅显示基于国家/地区记录计数的前 3 个组。我已经为类别组应用了一个过滤器,将 Count(Country) 的前 N 个条件指定为 3。生成的图表根据计数按预期应用过滤器,但即使存在具有重复值的条,我也只需要显示 3 个条。
下面是我得到的图表。
预期结果
现在我知道了,我可以在我的数据集中用排名值创建一个额外的列,然后在该列上应用过滤器以获得预期的结果(我已经尝试过这个,并且它有效)
有没有办法在不改变底层数据集的情况下达到预期的结果?
注意:上面显示的数据集是我的数据集的高度简化版本。实际上,我有一个包含很多列的庞大数据集。相同的数据集已用于各种图表(在不同的列上分组)。
sql-server reporting-services business-intelligence sql-server-2016 ssrs-2016
我想在我的 SQL Server 2016 表中插入一些 JSON 对象。
我的表结构如下:
field type nullable default
name | nvarchar(max) | true | Null
age | nvarchar(max) | true | Null
homeAddress | nvarchar(max) | true | Null
officeAddress | nvarchar(max) | true | Null
Run Code Online (Sandbox Code Playgroud)
我正在使用以下查询插入我的数据:
DECLARE @json NVARCHAR(MAX) = N'{"name":"John Smith","age":32,"homeAddress":{"addr1":"123rd West Street, Willow Apt","addr2":"#55 Suite","zipCode":12345,"city":"Austin","state":"TX"},"officeAddress":{"addr1":"23rd West Street","addr2":"","zipCode":12345,"city":"Austin","state":"TX"}}';
INSERT INTO Employee
SELECT *
FROM OPENJSON(@json)
WITH (name nvarchar(50),
age int,
homeAddress nvarchar(max),
officeAddress nvarchar(max)
);
Run Code Online (Sandbox Code Playgroud)
但是,表中仅填充name和的值age。这两个homeAddress和officeAddress值是NULL。 …
我正在尝试自动化 SQL 部署,包括用户和角色。当我在 Sql Management Studio 中创建用户时它可以工作,但是当我部署 dacpack 时我得到 SqlException: Login Failed for user 'MyUser'
我在本地主机上安装了 SQL Server 2016,同时启用了 Sql Server 和 Windows 身份验证。
我在 Visual Studio 中有包含这些文件的 Sql 数据库项目:
MyUser.sql [构建操作=构建]
CREATE USER [MyUser] WITH Password='$(MyUserPassword)';
Run Code Online (Sandbox Code Playgroud)RolesMembership.sql [构建动作=构建]
ALTER ROLE [db_datareader] ADD MEMBER [MyUser]
GO
ALTER ROLE [db_datawriter] ADD MEMBER [MyUser]
Run Code Online (Sandbox Code Playgroud)我构建它并使用命令行部署创建的 dacpac:
SqlPackage.exe /Action:Publish
/SourceFile:"MyDatabase.dacpac"
/Profile:"MyDatabase.publish.xml"
/v:MyUserPassword=c2Aaaaaaaaaaaa`
Run Code Online (Sandbox Code Playgroud)当我在 sql management studio 中执行此脚本时,它会起作用。但是当我使用 SqlPackage 部署它时,它会导致
SqlException: 用户“MyUser”登录失败
编辑:
我调查了生成的 sql 脚本,其中包括REVOKE CONNECT:
CREATE USER [MyUser] …Run Code Online (Sandbox Code Playgroud) sql-server database-project dacpac sqlpackage sql-server-2016
我需要在 SQL Server 2016 中的两个空间表之间进行空间交集,每个表中都有一个几何列。我有一段 T-SQL,我从一个表 (tableA) 中获取一组多边形,然后使用每个多边形并对另一个表(表B)执行STIntersects。我生成了一系列与 tableA 中的多边形数量相对应的独立表。这些表具有相同的列。
declare @g geometry
declare @t Cursor
Set @t = CURSOR FOR select Shape from admin where NAME1 = 'Jefferson'
open @t
FETCH Next FROM @t INTO @g
while @@FETCH_STATUS = 0
BEGIN
Select * from ANC where ANC.Shape.STIntersects(@g) = 1
FETCH Next FROM @t INTO @g
END;
Run Code Online (Sandbox Code Playgroud)
这将返回正确的信息,并为每个相交的多边形提供一个结果表和单独的地图。下一步是将上述各个输出组合到一个输出表中,但我遇到了困难。我尝试了以下方法:
declare @g geometry
declare @t Cursor
Set @t = CURSOR FOR select Shape from admin where NAME1 = 'Jefferson'
open @t
declare …Run Code Online (Sandbox Code Playgroud) 问题
存储过程正在接收变量和值列表以及分隔符.此存储过程需要将它们插入表中.
--Example table
create table #tempo
(
Variable1 int,
Variable2 int,
Variable3 int
)
Run Code Online (Sandbox Code Playgroud)
这些是存储过程的参数:
declare @variableList varchar(100)
declare @valueList varchar(100)
declare @separator char(1)
set @variableList = 'Variable1#Variable2#Variable3'
set @valueList = '1111#2222#3333'
set @separator = '#'
Run Code Online (Sandbox Code Playgroud)
结果
我想要实现的是:
select * from #tempo
+---------+---------+---------+
|Variable1|Variable2|Variable3|
+---------+---------+---------+
|1111 |2222 |3333 |
+---------+---------+---------+
Run Code Online (Sandbox Code Playgroud)
一种方法
我可以使用循环并构建动态SQL,但我想避免它.除了不使用动态SQL的明显原因之外,循环结构很难维护,解释和测试也可能成为一个问题.
理想的方式
我正在考虑一种更优雅的方法,例如使用string_split或coalesce等.但是如果不使用动态SQL或循环,就无法找到方法.
sql-server-2016 ×10
sql-server ×8
sql ×4
t-sql ×3
json ×2
dacpac ×1
database ×1
dynamic-sql ×1
localdb ×1
loops ×1
r ×1
sqlpackage ×1
ssis ×1
ssms ×1
ssrs-2016 ×1