如何知道VARCHAR字段的值是否可以成功转换为整数?
我想大规模地将记录从一个表插入另一个表...
我正在与一个从SQL Server 2000数据库转换过SQL Server 2008的客户端工作,其中一个查询在SQL Server 2000上的时间大大增加.
但是,如果我在DB中将兼容级别更改为2008,则查询就像火箭一样(快40-50倍).
该查询确实使用了许多UDF.
我的问题: - 在SQL Server 2008中运行SQL2000兼容性是否存在问题 - SQL Server 2008在使用UDF时是否提高了性能?
这听起来像是一个疯狂的请求.我报告的数据库没有任何外键,每个主键都是identity_column.这使得使用诸如TOAD之类的工具变得困难,因为Intellisense通过读取PK和FK关系来工作.
任何人都有一个脚本从数据库中的每个表中删除主键,所以我可以用"正确的"PK替换它们并添加FK以协助报告?
要忘掉"不要做!!!"的意思 回复,让我明确表示我不会对我的生产数据库执行此操作,而是将其复制到另一台服务器上.
任何意见,将不胜感激.
-------编辑使用正确的信息更新.----------------
谢谢你们,但我意识到我犯了一个错误.几乎每个表都有一个具有身份属性的"identity_column".该身份是聚集索引.但是,它未被指定为主键.
首先,主键和聚簇索引之间有什么区别?
其次,如何编写所有聚簇索引的脚本?这会有用吗?
SELECT
'ALTER TABLE ' + OBJECT_NAME(OBJECT_ID) + ' DROP CONSTRAINT ' + name
FROM sys.indexes WHERE type_desc = 'CLUSTERED'
Run Code Online (Sandbox Code Playgroud)
谢谢你的耐心
我希望将转换为2008格式的数据库转换回2000格式.我已经尝试了SQL Server Management Studio中提供的所有方法.导出数据,脚本数据库,所有这些都失败了.导出似乎不会导出所需的所有内容,生成的脚本始终包含错误.数据库非常庞大,无法在生成的脚本中找到错误.
有没有人有任何建议.
在 SQL Server 2000 中,我试图创建一个连接到 SQL Server 2008 的链接服务器。我尝试过的每件事都会引发一种或另一种风格的错误。
在 SQL Server 2000 企业管理器中,我:
当我展开刚刚创建的链接并单击“表格”时,出现错误,
错误 7416:访问远程服务器被拒绝,因为不存在登录映射。
谁能告诉我我做错了什么,或者成功创建此链接的正确步骤或 T-SQL 序列是什么?
非常感谢。
这可能是一个愚蠢的语法错误,但我只是继续阅读我的程序,但我无法弄清楚我的错误在哪里.
消息156,级别15,状态1,行41
关键字"FOR"附近的语法不正确.
这是我的代码:
alter procedure LockReservation as
DECLARE @edition_id tinyint, @stockid tinyint;
DECLARE @creservation CURSOR FOR select edition_id from reservation where (date_fin - GETUTCDATE()) <= 12;
open creservation;
while @@fetch_status = 0
BEGIN
fetch creservation into @edition_id;
DECLARE @cstock CURSOR
FOR select id from stock where edition_id = @edition_id;
open cstock;
while @@fetch_status = 0
BEGIN
fetch cstock into @stockid;
select stock_id from location where location.stock_id = @stockid and archivage = 0
if @@rowcount = 0
BEGIN
insert into …Run Code Online (Sandbox Code Playgroud) 我正在尝试做类似的事情 我该如何改进这个SQL查询?
但是,在那里逻辑基本上我有一个ID列表,可能有多个与之关联的值,值为Yes,No或其他字符串.对于ID x,如果任何值为Yes,则x应为Yes,如果它们都为No,则它应为No,如果它们包含任何其他值但是yes和no,则显示该值.我只想每个ID返回1行,没有重复.
但是在我的逻辑中如果所有值都是肯定的,那么显示是,如果所有值都是否则显示否,如果它是是,否或其他任何显示组合的混合
DECLARE @tempTable table ( ID int, Val varchar(1) )
INSERT INTO @tempTable ( ID, Val ) VALUES ( 10, 'Y')
INSERT INTO @tempTable ( ID, Val ) VALUES ( 11, 'N')
INSERT INTO @tempTable ( ID, Val ) VALUES ( 11, 'N')
INSERT INTO @tempTable ( ID, Val ) VALUES ( 12, 'Y')
INSERT INTO @tempTable ( ID, Val ) VALUES ( 12, 'Y')
INSERT INTO @tempTable ( ID, Val ) VALUES ( 12, …Run Code Online (Sandbox Code Playgroud) 如果我有一组这样的名字:
('first', 'fname', 'firstname', 'namef', 'namefirst', 'name')
Run Code Online (Sandbox Code Playgroud)
SQL Server 2000 - 2008 中检索包含上述特定数据库的列名的不同表名的最佳方法是什么?
我想从显示的表列表中排除系统表和临时表。
SELECT so.name
FROM sysobjects so
INNER JOIN syscolumns sc
ON so.id = sc.id
WHERE sc.name IN ('first', 'fname', 'firstname', 'namef', 'namefirst', 'name')
Run Code Online (Sandbox Code Playgroud)
我相信这是这个问题的衍生。
谢谢
我有一个存储过程,它看起来像这样:
SELECT * FROM empTable
WHERE empCode IN (@employeeCode)
Run Code Online (Sandbox Code Playgroud)
将@employeeCode接受来自另一个应用程序的输入,而我无法控制该应用程序。它会给我string这样的东西:'M06', 'R02', 'B19', 'C10'
当我执行该过程时,它返回 0 行。但是,当我使用以下查询在 SQL Server 中手动运行查询时:
SELECT * FROM empTable
WHERE empCode IN ('M06', 'R02', 'B19', 'C10')
Run Code Online (Sandbox Code Playgroud)
它返回 15 行。
我怀疑当employeeCode接受输入时,它假设整个'M06', 'R02', 'B19', 'C10'为 ONE string。有人能证实这一点吗?如果这是真的,我该如何解决?
编辑:我正在使用 SQL Server 2000
我有两张桌子account_agent和bulk_index. 每个表上的数据如下
account_agent
name code account remark scheme
avi 10 151362 first as
babi 11 123478 new as
avi 10 151721 new as
avi 10 151765 new as
sam sas/01 925458 tin sas
Run Code Online (Sandbox Code Playgroud)
bulk_index
agentcode account customer_name
10 151362 Alok
22 265721 Rohan
10 151721 Akash
Run Code Online (Sandbox Code Playgroud)
使用这些表,我希望在account_agent表上的结果如下
account_agent
name code account remark
avi 10 151362 first
avi 10 151721 new
Run Code Online (Sandbox Code Playgroud)
我试过查询
select * from account_agent where code = '10' and account = (select account …Run Code Online (Sandbox Code Playgroud)