我有这个公开交易,根据DBCC OPENTRAN:
Oldest active transaction:
SPID (server process ID) : 54
UID (user ID) : -1
Name : UPDATE
LSN : (4196:12146:1)
Start time : Jul 20 2011 12:44:23:590PM
SID : 0x01
Run Code Online (Sandbox Code Playgroud)
有没有办法杀死它/滚回去?
假设我有下表:
Value Time
0 15/06/2012 8:03:43 PM
1 15/06/2012 8:03:43 PM *
1 15/06/2012 8:03:48 PM
1 15/06/2012 8:03:53 PM
1 15/06/2012 8:03:58 PM
2 15/06/2012 8:04:03 PM *
2 15/06/2012 8:04:08 PM
3 15/06/2012 8:04:13 PM *
3 15/06/2012 8:04:18 PM
3 15/06/2012 8:04:23 PM
2 15/06/2012 8:04:28 PM *
2 15/06/2012 8:04:33 PM
Run Code Online (Sandbox Code Playgroud)
如何选择已加星标的行,Value即已更改的位置?基本上我试图找到时间Value已经改变,所以我可以根据这些时间间隔做其他查询.解决方案不应该依赖于知道Value或Time提前.
在我看来,这应该不是很难(但显然对我来说很难!).
我目前正在使用SQL Server 2008,但如果新窗口/分析功能有用,我可以访问2012.
我尝试在这里调整解决方案http://blog.sqlauthority.com/2011/11/24/sql-server-solution-to-puzzle-simulate-lead-and-lag-without-using-sql-server-2012-解析函数/但我的查询在一小时后没有完成!我认为连接将行大小爆炸到无法管理的东西(或者我搞砸了).
我可以使用C#代码和多个db调用来解决这个问题,但它似乎可以在表值函数或SP中完成,这样可以更好.
此外,Value如果更容易,只有增加的解决方案才行.
我想基于另一个表的定义创建一个表.
我来自甲骨文,我通常这样做:
CREATE TABLE schema.newtable AS SELECT * FROM schema.oldtable;
Run Code Online (Sandbox Code Playgroud)
我似乎无法在SQL Server 2008中执行此操作.
我试图只允许一个特定的表访问活动目录用户.我希望他们能够插入,更新,删除等,但仅限于该表.我知道这个命令:
GRANT Insert, Select on Tablename to user
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何让"域\用户"以语法方式工作.我试过了:
GRANT Insert, Select on Tablename to domain\user
Run Code Online (Sandbox Code Playgroud)
但我得到:
消息102,级别15,状态1
'\'附近的语法不正确.
为什么以下查询会返回"将数据类型varchar转换为bigint时出错"?IsNumeric不能使CAST安全吗?我已经尝试了强制转换中的每个数值数据类型并获得相同的"错误转换..."错误.我不相信结果数字的大小是一个问题,因为溢出是一个不同的错误.
有趣的是,在管理工作室中,结果实际上会在错误返回之前显示在结果窗格中一瞬间.
SELECT CAST(myVarcharColumn AS bigint)
FROM myTable
WHERE IsNumeric(myVarcharColumn) = 1 AND myVarcharColumn IS NOT NULL
GROUP BY myVarcharColumn
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
我已经安装了SQL Server 2012 Express Edition高级服务,该服务声明它包含全文索引.这是一个链接,说明这一点:
http://msdn.microsoft.com/en-us/library/cc645993.aspx
我已确认正在运行全文服务,但是当我尝试创建全文目录时,它会失败.我收到消息"此版本的SQL Server不支持全文.(Microsoft.SqlServer.Smo)"
有人有主意吗?
我有以下表格:
DataValue
DateStamp ItemId Value
---------- ------ -----
2012-05-22 1 6541
2012-05-22 2 12321
2012-05-21 3 32
Run Code Online (Sandbox Code Playgroud)
tmp_holding_DataValue
DateStamp ItemId Value
---------- ------ -----
2012-05-22 1 6541
2012-05-22 4 87
2012-05-21 5 234
Run Code Online (Sandbox Code Playgroud)
DateStamp并且ItemId是主要的关键列.
我正在做一个插件,它会在一天中定期运行(在存储过程中):
insert into DataValue(DateStamp, ItemId, Value)
select DateStamp, ItemId, Value from tmp_holding_DataValue;
Run Code Online (Sandbox Code Playgroud)
这会将数据从保持表(tmp_holding_DataValue)移动到主数据表(DataValue)中.然后截断保持表.
问题是,如示例中所示,保持表可以包含主表中已存在的项.由于密钥不允许重复值,因此过程将失败.
一种选择是在insert proc上放置一个where子句,但主数据表有1000万+行,这可能需要很长时间.
是否还有其他方法可以让程序在尝试插入时跳过/忽略重复项?
我有我要用来填充参数框在SSRS 2008年的客户表cust_num是价值的串联cust_name和cust_addr将标签.表中的必填字段是:
cust_num int PK
cust_name char(50) not null
cust_addr char(50)
Run Code Online (Sandbox Code Playgroud)
SQL是:
select cust_num, cust_name + isnull(cust_addr, '') address
from customers
Run Code Online (Sandbox Code Playgroud)
这给了我参数列表中的这个:
FIRST OUTPUT - ACTUAL
1 cust1 addr1
2 customer2 addr2
Run Code Online (Sandbox Code Playgroud)
这是我的预期,但我想要:
SECOND OUTPUT - DESIRED
1 cust1 addr1
2 customer2 addr2
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
select cust_num, rtrim(cust_name) + space(60 - len(cust_name)) +
rtrim(cust_addr) + space(60 - len(cust_addr)) customer
from customers
Run Code Online (Sandbox Code Playgroud)
这给了我第一个输出.
select cust_num, rtrim(cust_name) + replicate(char(32), 60 - len(cust_name)) +
rtrim(cust_addr) + replicate(char(32), 60 …Run Code Online (Sandbox Code Playgroud) 我正在使用BULK INSERT导入CSV文件.CSV文件中的一列包含一些包含分数的值(例如1m½f).
我不需要对分数进行任何数学运算,因为这些值仅用于显示目的,因此我将列设置为nvarchar.该BULK INSERT作品,但是当我SQL中查看记录的部分已被替换一分钱符号(¢),因此显示的文本1m¢f.
我很想知道为什么会这样,以及如何解决问题的任何想法.该BULK INSERT命令是:
BULK INSERT dbo.temp FROM 'C:\Temp\file.csv'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' );
Run Code Online (Sandbox Code Playgroud) 我正在尝试更改表的所有者:
sp_changeobjectowner 'OWNER.TABLENAME', 'dbo'
Run Code Online (Sandbox Code Playgroud)
但在执行时我收到错误消息:
消息15001,级别16,状态1,过程sp_changeobjectowner,行62
对象'OWNER.TABLENAME'不存在或不是此操作的有效对象.
sql-server ×7
sql ×2
t-sql ×2
bulkinsert ×1
create-table ×1
grant ×1
nvarchar ×1
select ×1
ssrs-2008 ×1