我知道可以传递多个参数COALESCE,但是当你想只检查一个表达式以查看它是否存在时,你是使用默认值还是使用它更好的做法ISNULL?
这两者之间是否有任何性能提升?
我有一个返回非常大的数据集的查询.我无法将其复制并粘贴到我通常所做的Excel中.我一直在研究如何直接导出到Excel工作表.我在运行Microsoft Server 2003的服务器上运行SQL SERVER 2008.我正在尝试使用Microsoft.Jet.OLEDB.4.0数据提供程序和Excel 2007.我拼凑了一小段代码看起来像这样我在例子中看到过.
INSERT INTO OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\Working\Book1.xlsx;Extended Properties=EXCEL 12.0;HDR=YES')
SELECT productid, price FROM dbo.product
Run Code Online (Sandbox Code Playgroud)
但是这不起作用,我收到一条错误消息说
"关键字'SELECT'附近的语法不正确".
有没有人对如何做到这一点或可能更好的方法有任何想法?
我正在编写一个返回表的函数.有两个参数传递给函数,构建并执行查询并将其插入到返回表中.但是我收到了这个错误.
只能在函数内执行函数和一些扩展存储过程.
我想不使用存储过程,因为这是一个简单的实用功能.有谁知道这是否可以做到.我的函数在下面编码,它检查某个表中某个列的dupe.
-- =============================================
-- AUTHOR: JON AIREY
-- THIS FUNCTION WILL RETURN A COUNT OF HOW MANY
-- TIMES A CERTAIN COLUMN VALUE APPEARS IN A
-- TABLE. THIS IS HELPFUL FOR FINDING DUPES.
-- THIS FUNCTION WILL ACCEPT A COLUMN NAME, TABLE
-- NAME (MUST INCLUDE SCHEMA), AND OPTIONAL
-- DATABASE TO USE. RESULTS WILL BE RETURNED AS
-- A TABLE.
-- =============================================
ALTER FUNCTION [dbo].[fn_FindDupe]
(
-- Add the parameters for the function here
@Column VARCHAR(MAX), …Run Code Online (Sandbox Code Playgroud) SELECT * FROM A
JOIN B
ON B.ID = A.ID
AND B.Time = (SELECT max(Time)
FROM B B2
WHERE B2.ID = B.ID)
Run Code Online (Sandbox Code Playgroud)
我试图在MYSQL中加入这两个表.不要注意,如果ID是唯一的,那么我不会尝试这样做.我浓缩了真实的解决方案来绘制简化的图片.我试图在特定记录的最大日期抓住并加入表B. 此过程由SSIS包运行,并且说B2.ID是未知列.我经常在MSSQL中做这样的事情并且是MYSQL的新手.任何人有任何指针或想法?
我一直在编写.NET应用程序,并且对框架中包含的错误处理印象深刻.
当捕获由进程或代码中某处抛出的错误时,我喜欢包含消息(ex.Message通常很常见),还有stacktrace(ex.stacktrace),它有助于将问题追溯到特定位置.
举一个简单的例子,比方说我们正在将数字记录到方法中的日志中:
public void ExampleMethod(int number){
try{
int num = number
...open connection to file
...write number to file
}
catch(Exception ex){
.... deal with exception (ex.message,ex.stacktrace etc...)
}
finally{
...close file connection
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法看到调用的方法(在这种情况下ExampleMethod)与传递的特定数字可能会导致方法调用崩溃?我相信你可以在catch块中记录这个,但我主要感兴趣的是捕获导致系统抛出异常的方法调用和参数.
有任何想法吗?
我正在尝试将基于SQL Server数据库的常量和连续的批量数据传输到MYSQL数据库.我想使用SQL Server的SSMS复制,但这显然只适用于SQL Server到Oracle或IBM DB2连接.目前,我们正在使用SSIS转换数据并将其推送到MYSQL数据库的临时位置,在该位置复制数据.我想以最快的方式传输数据和复杂的几种方法.
我有一种新方法,我计划转换数据,我相信这将解决大多数时间问题,但我想确保我们将来不会遇到时间问题.我已经设置了一个链接服务器,它使用MYSQL ODBC驱动程序在SQL Server和MYSQL之间进行通信.这看起来非常慢.我有一些代码也使用Microsoft的ODBC驱动程序,但使用得太少,我无法衡量性能.有谁知道在这两个数据库之间快速通信的方式?我一直在研究MYSQL的数据提供程序,它们似乎与OleDB层进行通信.我不太确定该相信什么,以及哪种方式可以引导任何想法?
我有一个从视图中填充的大表.这样做是因为视图需要很长时间才能运行,并且更容易在表中提供数据.每隔一段时间运行一个过程以更新表.
TRUNCATE TABLE LargeTable
INSERT INTO LargeTable
SELECT *
FROM viewLargeView
WITH (HOLDLOCK)
Run Code Online (Sandbox Code Playgroud)
我想在插入时锁定这个表,所以如果有人试图选择一个他们在截断后不会收到的记录.我正在使用的锁似乎锁定视图而不是表.
有没有更好的方法来解决这个问题?
......之间的差异是什么?
execute as user = 'testuser'
Run Code Online (Sandbox Code Playgroud)
和
execute as login = 'testuser'
Run Code Online (Sandbox Code Playgroud)
我正在这些登录下执行跨数据库过程,它使用exececute作为登录,但不作为执行用户.它说服务器主体"testuser"不能在安全上下文下访问数据库"xxx".
当我SELECT SYSTEM_USER在两个命令之后,我看到它被设置为'testuser'
我很懒,有时候很懒,但是嘿(讽刺的是)这就是我们如何把事情做好的?
有一个简单的想法可能或不在那里.如果它是我想知道,如果不是,也许我会成功.
当我使用我的MSSQL数据库时,有时候我想测试各种事务在表,视图和程序等方面的性能......有没有人知道是否有办法用x一堆垃圾数据填充表格进行试验.
一个人可以很简单..
INSERT INTO `[TABLE]`
SELECT `COLUMNS` FROM [`SOURCE_TABLE`]
Run Code Online (Sandbox Code Playgroud)
或者做某种......
DECLARE count int
SET count = 0
WHILE count <= `x`
BEGIN
INSERT INTO `[TABLE]`
(...column list...)
VALUES
(...VALUES (could include the count here as a primary key))
SET count = count + 1
END
Run Code Online (Sandbox Code Playgroud)
但似乎已经或应该已经存在某种东西了.有任何想法吗??