lunes, 30 de enero de 2012

¿Qué es LocalDB?

Aplica a: SQL Server 2012, SQL Server Denali.

¿Qué es LocalDB?

Es una nueva versión de SQL Server Express especialmente dirigida a los desarrolladores para evitarles una instalación completa de otras ediciones de SQL Server. De esta forma los desarrolladores se pueden enfocar en el desarrollo de aplicaciones sin hacer una gran inversión de tiempo instalando y configurando un servidor de base de datos.


Beneficios.

bullet Tiene un instalador de tamaño reducido. La versión 32-bit tiene 28.2 MB y la de 64-bit tiene 33.7 .
bullet Simplificado. No requiere configuración o administración.
bullet Ejecuta como un usuario con pocos privilegios a nivel de sistema operativo.
bullet Se instala de una forma sencilla.
bullet Ofrece el mismo lenguaje T-SQL que tiene SQL Server Express. Soporta procedimientos almacenados (stored procedures), triggers, vistas (views), y los tipos de datos geometry y geography.
bullet LocalDB usa el mismo sqlservr.exe que usan otras ediciones de SQL Server y los mismos proveedores (providers) a nivel de cliente.
bullet LocalDB no crea ningún servicio de base de datos, y el servicio se inicia y se detiene automática.
bullet Las conexiones de LocalDB soportan la propiedad AttachDbFileName, que permite a los desarrolladores especificar la localización de una base de datos.
bullet Los "service packs" de LocalDB pueden ser usados para actualizar una instalación de LocalDB o para realizar una nueva instalación de LocalDB.
bullet Una sola instalación de LocalDB para todos los usuarios que usan un computador.
bullet Permite instalación silenciosa vía línea de comando.
bullet Le resulta familiar a desarrolladores que hace uso de SQL Server Compact.
bullet Funciona con ASP .NET
bullet Soporta XML (XQuery, XPath) y BLOBs.
bullet Soporta ADO .NET Sync Framework
bullet Soporta LINQ.
bullet Soporta transacciones distribuidas.
bullet Permite ilimitadas conexiones locales.


Requerimientos.

bullet Requiere SQL Server 2012 Native Client, el cual no está incluido en el instalador de LocalDB.
bullet Requiere derechos administrativos para instalarse, debido a que se instala para todos los usuarios de un computador.
bullet Requiere 140 MBs de espacio de disco.
bullet Requiere que .NET Framework 4 sea llevado a la versión 4.0.2.


Limitaciones.

bullet No soporta Windows XP, Windows Server 2003, Window 2000.
bullet No soporta WOW. LocalDB no soporta una instalación de 32 bits en un Windows de 64 bits.
bullet Sólo permite conexiones locales. Sólo permite conexiones Named Pipes.
bullet Sólo SQL Server 2012 Mangement Studio (en un computador actualizado con .NET Framework 4.0.2) puede usarse para administrar LocalDB. Versiones anteriores de SQL Server Management Studio no pueden ser usadas.
bullet Visual Studio 2010 RTM no soporta LocalDB. Permite conectarse a LocalDB, pero en los diseños que involucran a base de datos se presentan errores. Se espera una actualización de Visual Studio que elimine esta limitación.
bullet No funciona en equipos móviles, a diferencia de SQL Compact.
bullet Tamaño límite de una base de datos: 10 GB.
bullet No soporta  FileStream. FileStream no es soportado en instancias de usuario.
bullet Limitado a hacer uso de un CPU.


¿Cómo instalarlo?

Primero, obténgalo aquí.

Como notará debajo, LocalDB sólo requiere aceptar el acuerdo de licenciamiento para instalarse.

Para una instalación silenciosa haga uso del siguiente comando:
msiexec /i SqlLocalDB.msi /qn IACCEPTSQLLOCALDBLICENSETERMS=YES

Usando la interfaz gráfica, se instala como sigue:
























Cómo conectarse a LocalDB usando SQL Server Management Studio (SSMS).


Usted se puede conectar a LocalDB usando SQL Server 2012 Management Studio si el .NET Framework 4 ha sido actualizado a 4.0.2 o posterior.

Use "(localdb)\v11.0" como nombre de servidor.





Versiones anteriores de SQL Server Management Studio no pueden conectarse a LocalDB, debido a que no usan .NET Framework 4.0.



Cómo crear una nueva base de datos usando SQL Server 2012 Management Studio.

Se crea una base de datos de la misma forma en que se crea en otras versiones de SQL Server: haga un clic derecho en "Databases" y selecciones "New database". Sin embargo, no deje de proveer una ruta (path) para alojar la base de datos en disco, o recibirá un error.






lunes, 5 de diciembre de 2011

El Tab de Startup Parameters en SQL Server 2012

Aplica a: SQL Server 2012, SQL Server Denali.

SQL Server 2012 trae una nueva forma de configurar las opciones de inicio de servicio de SQL Server (el motor de base de datos específicamente). Cuando abra SQL Server Configuration Manager, haga un clic derecho en el servicio SQL Server, seleccione Properties (Propiedades) y encontrará el nuevo tab de Startup Parameters.

Para demostrar cómo este nuevo tab hace más fácil usar opciones de inicio de servicio de SQL Server, mostremos cómo iniciar una instancia de SQL Server 2012 en modo de usuario único.

1. Abra SQL Server Configuration Manager y en el panel izquierdo haga clic en "Services".
2. En el panel derecho, haga un click derecho en el servicio SQL Server, y luego haga clic en Properties (Propiedades).





3. Haga un clic en el tab de Startup Parameters e introduzca "-m" en el campo o cuadro "Specify a startup parameter:", haga clic en el botón de "Add", y luego haga clic en el botón de "OK".





4. Un mensaje de advertencia puede aparecer especificando que es necesario reiniciar el servicio para que los cambios tengan efecto, lo cual significa desconexión de usuarios. Luego, haga clic en OK.




5. Se recomienda que pare el servicio de SQL Agent para evitar que haga uso de la única conexión disponible al motor de base de datos.





Para retornar el motor de base de datos a modo multiusuario, diríjase al tab de Startup Parameters, haga clic en el parámetro "-m", luego haga clic en el botón de "Remove". Finalmente, haga clic en el botón de "OK".



 

jueves, 1 de diciembre de 2011

14 Nuevas Funciones T-SQL en SQL Server 2012

Aplica a: SQL Server 2012.

SQL Server 2012 trae 14 nuevas funciones T-SQL y mejora otra existente..


Funciones de conversión.


Función TRY_CONVERT. Retorna un valor convertido a un tipo de datos especificado, si la conversión es exitosa. En caso contrario retorna null.









Función TRY_PARSE. Retorna el resultado de una expresión, convertida al tipo de datos solicitado, o nulo si la conversión falla.

Ejemplo:

SELECT CASE WHEN TRY_PARSE('Morillo' AS decimal) IS NULL
THEN 'True'
ELSE 'False'
END
AS Result

Resultado:

True

(1 row(s) affected)

Ejemplo:

SELECT TRY_PARSE('1234.5' AS decimal(5,1)) AS Result

Resultado:

Result
---------------------------------------
1234.5

(1 row(s) affected)


Función PARSE. Retorna el resultado de una expresión, convertida al tipo de datos solicitado. Sintaxis: PARSE (string_value AS data_type [USING culture])

Ejemplo:

SELECT PARSE('Monday, 13 december 2010' AS datetime2) AS Resultado

Resultado:

Resultado
----------------------
2010-12-13 00:00:00.00

(1 row(s) affected)


Funciones de Fecha y Tiempo.


Función EOMONTH. Esta función retorna el último día del mes correspondiente a la fecha pasada como parámetro.

Ejemplo:

SELECT EOMONTH('2/2/2011')

Resultado:

----------------------
2011-02-28 00:00:00.00

(1 row(s) affected)



Función TIMEFROMPARTS. Retorna un valor de tipo "time" para el tiempo pasado como parámetro, y con la precisión especificada. Sintaxis: TIMEFROMPARTS(hora, minutos, segundos, fracciones, precisión)

Ejemplo:

DECLARE @time time
SET @time = TIMEFROMPARTS(23, 59, 59, 0, 0)
SELECT @time

Resultado:


----------------
23:59:59.0000000

(1 row(s) affected)


Función SMALLDATETIMEFROMPARTS. Retorna un valor de tipo "smalldatetime" para la fecha y hora especificada. Sintaxis: SMALLDATETIMEFROMPARTS (año, mes, día, hora, minutos)

Ejemplo:

SELECT SMALLDATETIMEFROMPARTS(2011, 10, 24, 16, 35)

Resultado:


-----------------------
2011-10-24 16:35:00

(1 row(s) affected)



Función DATEFROMPARTS. Retorna un valor de tipo "date" para el año, mes y día especificados. Sintaxis: DATEFROMPARTS (año, mes, día)


Ejemplo:

SELECT DATEFROMPARTS(2011, 10, 24)

Resultado:


----------
2011-10-24

(1 row(s) affected)



Función DATETIMEFROMPARTS. Retorna un valor de tipo "datetime" para la fecha y hora especificadas. Sintaxis: DATETIMEFROMPARTS (año, mes, día, hora, minutos, segundos, milisegundos)

Ejemplo:

SELECT DATETIMEFROMPARTS (2011, 10, 24, 16, 45, 43, 22)

Resultado:


-----------------------
2011-10-24 16:45:43.023

(1 row(s) affected)



Función DATETIME2FROMPARTS. Retorna un valor de tipo "datetime2" para la fecha y hora especificadas, y con la precisión especificada. Sintaxis: DATETIME2FROMPARTS (año, mes, día, hora, minutos, segundos, fracciones, precisión)

Ejemplo:

SELECT DATETIME2FROMPARTS(2011, 10, 24, 16, 45, 43, 22, 3) -- 3=Milisegundos
-- 7=Nanosegundos

Resultado:


----------------------
2011-10-24 16:45:43.02

(1 row(s) affected)


Función DATETIMEOFFSETFROMPARTS. Retorna un valor de tipo "datetimeoffset" para la fecha y hora especificadas, y con la precisión especificada. Sintaxis: DATETIMEOFFSETFROMPARTS (año, mes, día, minutos, segundos, fracciones, hora_offset, minutos_offset, precisión).

Ejemplo:

SELECT DATETIMEOFFSETFROMPARTS(2011, 10, 24, 16, 45, 43, 0, 12, 0, 3)

Resultado:


----------------------------------
2011-10-24 16:45:43.000 +12:00

(1 row(s) affected)



Funciones Lógicas.


Función CHOOSE. Retorna el elemento de una lista de valores que se encuentra en el índice especificado. Sintaxis: CHOOSE (índice, val1, val2[, val_n]).

Ejemplo:

SELECT CHOOSE( 1, 2.30, 2.90, 4.10) as 'Discount Price'

Resultado:

Discount Price
---------------------------------------
2.30

(1 row(s) affected)



Función IIF. Retorna uno de dos valores, dependiendo de si la expresión booleana se evalúa como verdadero o como falso. Sintaxis: IIF (expresión booleana, valor verdadero, valor falso).

Ejemplo:

DECLARE @value1 int=1
DECLARE @value2 int=5
SELECT IIF(@value1 > @value2, 'True', 'False').

Resultado:


-----
False

(1 row(s) affected)


Funciones Matemáticas.


Función LOG. Retorna el logaritmo natural de la expresión flotante especificada. Sintaxis:
LOG (expresión flotante[, base]).

Por omisión retorna el logaritmo natural, con base e, donde e=2.718281828

Ejemplo:

SELECT LOG(10)

Resultado:

----------------------
2.30258509299405

(1 row(s) affected)

Ejemplo:

SELECT LOG(10,10)

Resultado:

----------------------
1

(1 row(s) affected)



Funciones de cadenas de caracteres.


Función CONCAT. Retorna una cadena de caracteres que es resultado de concatenar dos o más valores.

Ejemplos:

SELECT 'Alberto' + ', ' + 'Morillo'
SELECT CONCAT('Alberto', ' ', 'Morillo', ' ', 'Rodriguez')

Resultados:

----------------
Alberto, Morillo

(1 row(s) affected)


-------------------------
Alberto Morillo Rodriguez

(1 row(s) affected)



Función FORMAT. Retorna un valor formateado con el formato especificado y cultura, si se especifica. Sintaxis: FORMAT (valor, formato[, cultura]).

DECLARE @d DATETIME = '10/24/2011';
--SELECT FORMAT (@d, 'd', 'es-es') AS Result; -- Spanish - Spain
--SELECT FORMAT (@d, 'd', 'es-DO') AS Result; -- Spanish - Dominican Republic
--SELECT FORMAT (@d, 'd', 'af') AS Result; -- Afrikaans
SELECT FORMAT (@d, 'd', 'hy') AS Result; -- Armenian

Dónde se encuentra la lista de "culturas"?

http://msdn.microsoft.com/es-es/library/system.globalization.cultureinfo(VS.80).aspx

SELECT FORMAT(47.127, '0.00') as Price
SELECT FORMAT(47.127, '$0.00', 'es-DO') as Price

sábado, 30 de julio de 2011

Instalando Umbraco CMS con Microsoft SQL Server

Instalando Umbraco CMS con Microsoft SQL Server.


Aplica a: Microsoft SQL Server 2008, Umbraco Content Management System.

Umbraco es un manejador de contenido “open source” basado en tecnología .NET y opera sobre Microsoft Internet Information Services (IIS) y almacena sus datos en Microsoft SQL Server.

El software requerido para instalar Umbraco CMS es el siguiente:
- Visual Studio Web Express

Luego de instalar el software expuesto arriba, descargue e instale Umbraco (aquí) y haga click en el botón verde (“Install using the Microsoft Web Platform Installer”).




En la siguiente página del programa de instalación haga clic en “Install”.





Seleccione el tipo de manejador de base de datos que usted usara para almacenar la data de Umbraco.




Luego haga clic en el botón de “I accept” y la siguiente página aparecerá.





En la siguiente página, especifique si una base de datos será creada o una existente será usada. Especifique también las credenciales de un login de SQL Server que fingirá como administrador de la base de datos creada por Umbraco.

 




Deslice hacia abajo el botón de “scroll” de la página y provea del usuario de base de datos que accederá a la aplicación de base de datos. Provea el nombre de la instancia de base de datos (servidor de base de datos) también. 




Alcance el final de la página (último campo), y provea el nombre que desee asignar a la base de datos de Umbraco.





Instalación en progreso.





Una vez la instalación finalice, haga clic en “Finish”.




La siguiente es la interfaz de usuario de Umbraco CMS.




lunes, 25 de julio de 2011

No se puede crear un linked server a Oracle.

No se puede crear un linked server a Oracle.

Aplica a: SQL Server 2008 R2 Enterprise Edition, Windows Server 2008 R2 Enterprise Edition.
 
Descripción del Problema.
 
Nosotros descargamos e instalamos el cliente de Oracle 11g client 11gR1 (win64_11gR1_client o 11.1) para crear un linked server entre una instancia de SQL Server 2008 R2 Enterprise Edition y un servidor Oracle 11g. La creación del linked server fue exitosa, pero cuando tratamos de expandir el contenedor de Tables dentro del linked server para que mostrara las tablas disponibles en el servidor Oracle remoto, entonces recibimos el siguiente error:

Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)
Additional information:
An exception occurred while executing a Transact-SQL statement or batch.
(Microsoft.SqlServer.ConnectionInfo)
Cannot create an instance of OLE DB Provider "OraOLEDB.Oracle" for linked server "RH6I".
(Microsoft SQL Server, Error: 7302)




Nosotros habilitamos la opción "Allow in process" en las propiedades del OraOLEDB.oracle provider, no obstante el error anterior persistía.






Solución.

Nosotros encontramos que un nuevo “release” del cliente de Oracle estaba disponible (win64_11gR2_client o 11.2). Una vez instalada la nueva versión del cliente y habilitada la opción “Allow in process", el linked server funcionó a la perfección. Ya éramos capaces de expandir el contenedor de Tables en el linked server.