我已经在VM上安装了SQL Server 2014 Enterprise,并且正在尝试安装升级顾问.
方向表明我应该运行,SqlUA.msi但我收到以下错误:
安装程序缺少先决条件:
Microsoft SQL Server 2014 Transact-SQL-ScriptDom,升级顾问安装程序未安装.要继续,请从下面的超链接安装SQL Server 2014 Transact-SQL ScriptDom,然后再次运行Upgrade Advisor Setup操作:
这只是带我到下载页面.没有ScriptDom文件,但进一步搜索显示他们的意思是SQLDOM.所以我从上面的那个页面安装了SQLDOM.msi并得到以下错误:
Microsoft SQL Server 2012 Transact-SQL-ScriptDom
安装Microsoft SQL Server 2012 Transact-SQL-ScriptDom失败,因为计算机上已存在更高版本.要继续,请卸载更高版本,然后再次运行Microsoft SQL Server 2012 Transact-SQL ScriptDom安装程序.
嗯,这很令人困惑.首先我被告知我没有它,然后我被告知我正在尝试安装旧版本.我已经重新启动了VM和我的本地笔记本电脑但没有帮助.Microsoft支持告诉我他们不支持升级顾问.
我正在使用SQL Server 2014,我有以下查询运行正常:
USE MyDatabase
SELECT [Room Nights],
COUNT([Room Nights]) AS 'Count of RN'
FROM HOLDINGS2
GROUP BY [Room Nights]
Run Code Online (Sandbox Code Playgroud)
输出如下:
Room Nights Count of RN
1 3
4 10
5 6
7 25
Run Code Online (Sandbox Code Playgroud)
现在我想显示另一个列,它给出了百分比的分布Count of RN.因此,我的输出需要像这样:
Room Nights Count of RN % Distribution
1 3 6.8
4 10 22.7
5 6 13.6
7 25 56.8
Run Code Online (Sandbox Code Playgroud)
我看了下面的讨论,试图找出一个解决方案: 计算值的百分比分布.
我想出了对现有代码的以下修改,但它不起作用!我在% Distribution列中只有零.
USE MyDatabase
SELECT [Room Nights],
COUNT([Room Nights]) AS 'Count of RN',
CAST(COUNT([Room Nights])/(SELECT COUNT([Room Nights])*100. …Run Code Online (Sandbox Code Playgroud) 我正在尝试在SQL Server中使用Snippets功能.
我正在测试按照此处的说明向SQL Server 2014添加新的代码段.
一切正常,但在我添加片段之后,它不会出现在IntelliSense中.更重要的是,我意识到并非所有内置代码片段都会出现.
我想知道是否有其他人有相同的经历,并知道如何解决这个问题?
这是一个内置片段列表 Function

这就是我从IntelliSense中看到的(其中3个缺失)

我正在尝试编写一些SQL,它将在6个月的时间内给出该月的最后一天.
例如,如果我有一个15-07-2015的检查日期,我希望下一个检查日期是31-01-2016
检查日期可以是任何一个月的任何一天
任何建议将不胜感激.
设想一个存储过程,它接受@skip(偏移)和@take(要返回的最大行数.如果@take是null,那么我想返回"应用偏移后的所有行".
我可以通过计算表/视图中的行数来实现这@take一点null,但是我必须执行两个查询,这当然不是最佳的.我希望有一个类似的选项FETCH [NEXT] ALL ROWS.
DECLARE @skip BIGINT = 0;
DECLARE @take BIGINT = NULL;
IF (@take IS NULL) SET @take = (SELECT COUNT(*) FROM SomeTable);
SELECT *
FROM SomeTable
ORDER BY SortOrder
OFFSET @skip ROWS
FETCH NEXT @take ROWS ONLY
Run Code Online (Sandbox Code Playgroud) t-sql sql-server stored-procedures sql-server-2012 sql-server-2014
我需要确保每个IncidentID都有2个特定的ResponseCodes(201 AND 204).我如何识别IncidentID不具有201和204的那个,如下图所示?
数据集
我想在数据集中识别的内容
期望的结果集:
SQL Fiddle对我不起作用,但测试代码如下:
CREATE TABLE DIS (
IncidentID NUMERIC,
ResponseCode NUMERIC,
ResponseCodeDescription varchar(30)
)
INSERT INTO DIS (IncidentID, ResponseCode, ResponseCodeDescription)
VALUES
( '999888', '201', 'OSS'),
( '999888', '204', 'Long Term OSS'),
( '888777', '201', 'OSS'),
( '888777', '204', 'Long Term OSS'),
( '777666', '204', 'Long Term OSS'),
( '555444', '201', 'OSS'),
( '555444', '204', 'Long Term OSS')
SELECT
IncidentID
, ResponseCode
, ResponseCodeDescription
FROM DIS
Run Code Online (Sandbox Code Playgroud)
谢谢!
我们有一个广泛的表,我们目前正在尝试优化.该表有50列(统计数据),我们最终希望按降序排列.目前有超过500万行.
我们正在寻找在降低复杂性和提高读取速度方面优化此表的方法.写入速度对我们来说也很重要,但读取更为关键.这些统计数据的排名应该尽可能接近实时,最佳解决方案是在每个请求的基础上快速排名(新行一直在增加,我们希望尽快显示这些行的排名) .)
我们目前正在评估垂直表格布局是否会更好.)更容易使用.
因为插入的统计数据不一定定义得很好,所以如果它们没有硬编码到表中,则更容易(因此优先选择垂直表结构.)
以下是我们当前的表结构和查询:
CREATE TABLE Stats
(
Id BIGINT PRIMARY KEY NOT NULL,
UserId INT,
Name VARCHAR(32) NOT NULL,
Value DECIMAL(10,4) DEFAULT ((0)) NOT NULL,
UpdatedAt DATETIME
);
CREATE INDEX Leaderboard__index ON Stats (Name, Value DESC);
SELECT
Id,
Name,
Value,
RANK() OVER (PARTITION BY Name ORDER BY Value DESC) AS Rank
FROM
Stats
ORDER BY
Value DESC
Run Code Online (Sandbox Code Playgroud)
通常我们要么搜索任何给定统计数据的前N行(如排行榜),要么我们选择单个UserId并获得与该UserId相关的所有统计数据的排名.
数据相当大(正如我上面提到的,因为有很多行和很多列,垂直表结构可能在2.5亿行的范围内并且将继续增长.)
我们希望在需要的任何硬件上尽快获取这些数据,秒是我们的目标,因为我们目前在分钟范围内.
在对垂直表结构的测试中,我们插入了超过400,000行的数据,上面的查询需要不到3分钟(尽管它也只需要大约18秒来排名10,000行.)
我很乐意听到任何建议.谢谢你的时间!
我想更新表中的一行:
try
{
string sql ="UPDATE TableNAme SET FirstName ='John' WHERE ID = 123";
MySqlCommand command = new MySqlCommand(sql, connection);
connection.Open();
command.ExecuteNonQuery();
}
catch (Exception)
{
}
finally
{
connection.Close();
}
Run Code Online (Sandbox Code Playgroud)
基于ID(密钥),如果ID在表中,它将完美地工作,但如果表中不存在该ID,则它不会显示错误消息.
有没有办法让我知道是否找不到身份证?
我有一张这样的桌子:
CREATE TABLE Customers
(CustomerID int Identity (1,1) NOT NULL PRIMARY KEY,
customerName varchar (50),
Address varchar (255),
Phone int NOT NULL,
Email varchar,
Gender varchar,
Age int,
);
Run Code Online (Sandbox Code Playgroud)
我尝试像这样插入这个表:
Insert into Customers (customerName, Address, Phones, Email, Gender, Age)
Values ('Anosa Seunge', 'Keskuskatu 200', 358-3-4180, 'ijiosd@ao.com', 'Male', 19),
('Jihad Christian', '305 - 14th Ave. Suite 3B', 358-1-3688, 'jihado@ao.com', 'Female', 29);
Run Code Online (Sandbox Code Playgroud)
并得到此错误:
Msg 8152, Level 16, State 14, Line 4
String or binary data would be truncated.
The statement has been …Run Code Online (Sandbox Code Playgroud) sql-server-2014 ×10
sql-server ×9
sql ×4
t-sql ×3
c# ×1
count ×1
database ×1
optimization ×1
performance ×1
ranking ×1
upgrade ×1