chocolim.com

De nada un poco

rainbow

Archive for the ‘SQL Server’ Category

Ver version de SQL Server en un query

Para ver la version del servidor.

SELECT 'SQL Server ' 
+ CAST(SERVERPROPERTY('productversion') AS VARCHAR) + ' - ' 
+ CAST(SERVERPROPERTY('productlevel') AS VARCHAR) + ' (' 
+ CAST(SERVERPROPERTY('edition') AS VARCHAR) + ')'

Todos los clientes con el mismo zip code

Interesante self-join

SELECT c2.name
FROM customer c, customer c2
WHERE c.customer_id = 648 AND
c.zipcode = c2.zipcode;

Cambiar el pass a un usuario de sql-server

Si se es sysadmin:

sp_password [ [ @old = ] 'old_password' , ]
{ [ @new =] 'new_password' }
[ , [ @loginame = ] 'login' ]

Sino, loguearse como el usuario y:

sp_password 'old_password' ,'new_password'

Recuperar el id del ultimo registro insertado

Algo muy comun es querer saber el id del ultimo registro insertado, aca posteo un ejemplo de como hacer eso para una base de datos SQL Server en c#:

SqlConnection conn= new SqlConnection(
ConfigurationManager.ConnectionStrings["dbConn"].ConnectionString
);
string insertStr =
"INSERT INTO [tabla]([texto],[fecha]) VALUES(@texto,getDate())
;SELECT  Scope_Identity();";
SqlCommand cmd=new SqlCommand(insertStr,conn);
cmd.Parameters.Add("@texto", SqlDbType.NVarChar).Value="El texto va aca";
cmd.Connection.Open();
string ret=cmd.ExecuteScalar().ToString();
cmd.Connection.Close();

La parte clave esta en la sentencia Select Scope_Identity() del sql.

Filas con 100%

Si una fila de tu tabla tiene un valor que incluya la frase 100% proceder asi:

SELECT * FROM tablename WHERE x LIKE '%100[%]%'

o

SELECT * FROM tablename WHERE x LIKE '%100\%%' ESCAPE '\'

EXECUTE permission denied on object sp_sdidebug, database master, owner dbo.

Este error choto(EXECUTE permission denied on object ‘sp_sdidebug’, database ‘master’, owner ‘dbo’.) se cura con:

GRANT EXECUTE ON sp_sdidebug TO 'username';

Obtener fechas en SQL Server

El primer dia del mes:

SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

El Ultimo dia del mes:

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate()  )+1, 0));


El Lunes de la semana actual:

SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)


Primer dia del año:

SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

Ultimo dia del mes anterior:

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()  ), 0));

Ultimo dia del año anterior:

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate() ), 0))

Primer lunes del mes:

SELECT DATEADD(wk, DATEDIFF(wk,0,
dateadd(dd,6-datepart(day,getdate()),getdate())), 0);

You are currently browsing the archives for the SQL Server category.