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.

domingo, 26 de junio de 2011

Computer does not meet the minimum requirements.


Aplica a: SQL Server Denali CTP 1, Windows Server 2008.
 
Descripción del Problema.
 
Iniciando la instalación de SQL Server Denali CTP1 en un computador con Windows Server 2008 instalado, recibimos del instalador de SQL Server el siguiente error:

The operating system on this computer does not meet the minimum requirements for SQL Server "Denali". For more information, see Hardware and Software Requirements for installing SQL Server at:


http://go.microsoft.com/fwlink/?LinkID=195092





Solución.


Las siguientes actualizaciones y software son requeridos para instalar SQL Server Denali en Windows Server 2008:


1.
Windows Server 2008 Service Pack 2 (SP2) - KB948465. Descargue esta actualización aquí.

 



2. Microsoft .NET Framework 4.0 (Standalone Installer). Descargue esta actualización aquí.




3. Windows PowerShell 2.0. Descargue esta actualización aquí.

 .

martes, 31 de mayo de 2011

Microsoft Atlanta - System Center Advisor

Microsoft Atlanta - System Center Advisor

Aplica a: Microsoft SQL Server 2008, Microsoft SQL Server 2008 R2.
La versión beta de Microsoft Atlanta fue lanzada en Noviembre del 2010 y está disponible para evaluación en el sitio Web http://www.microsoftatlanta.com. Esta herramienta en la nube representa buenas noticias para la Comunidad de Microsoft SQL Server debido a que la misma monitorea la configuración de instancias SQL Server.  La herramienta efectúa análisis de configuración y genera alertas acerca de la configuración de instancias SQL Server.

  1. Componentes.
  2. Requerimientos.
  3. Cómo instalar un Gateway.
  4. Cómo instalar un agente.
  5. Cómo autorizar agentes para acceder al Gateway,
  6. Haciendo uso de System Center Advisor.


1. Componentes.


Un Gateway es un servidor conectado al Internet que puede enviar data al System Center Advisor, el cual se encuentra en la nube.

Un agente debe ser instalado en cada servidor que usted desee analizar con el Advisor. Cada servidor con este agente instalado no requiere acceso a Internet, pero debe ser capaz de comunicarse con el Gateway.
 
Ambos componentes, el Gateway y los agentes, deben ser instalados usando el  programa de instalación Advisor Gateway and Agent Setup, el cual puede ser descargado una vez usted se registre en el sitio Web que mencionamos arriba, junto con el certificado de registración.



2. Requiremientos.
  • Microsoft Silverlight es requerido en el explorador Web que use para acceder a la herramienta Web.
  • Acceso a Internet se requiere en el computador donde el componente Gateway este instalado.
  • Un certificado de registración deber ser instalado en el computador que este fungiendo como Gateway.
  • Microsoft PowerShell es requerido en los servidores donde el agente este instalado.
  • Ambos componentes, el Gateway y el agente, solo pueden ser instalados en computadores con sistema operativo Windows Server 2008 instalado, o superior.
  • Los gateways y los agentes necesitan comunicarse unos con otros a través del puerto 80.
  • Solo instancias con SQL Server 2008 o posterior pueden ser analizadas. Por tanto, el agente debe ser instalado en esos computadores que cumplan el requerimiento.


3. Cómo instalar un Gateway.

Por favor, visite el sitio Web de Microsoft Atlanta y proceda a crear una cuenta.
Descargue el certificado de registro (primer botón azul de arriba hacia abajo), así como el programa de instalación (segundo botón azul).  El programa de instalación se llama Advisor Gateway and Agent Setup.



Ejecute el programa de instalación (Advisor Gateway and Agent Setup). Haga clic en el botón de Next en la página denominada  “Welcome screen”.


Haga clic en el checkbox asociado a  "I accept the terms in the License Agreement"  y efectúe un clic en el botón de Next.




Especifique el folder donde el Advisor será instalado.




Seleccione el checkbox asociado a Gateway para instalar el componente de gateway en este computador. Seleccione también el checkbox asociado al agente, si este computador tiene una instancia de SQL Server instalada.








Un mensaje de advertencia puede aparecer para recordarle que el puerto 80 debe estar abierto para permitir la comunicación entre el Gateway y los agentes.


Provea en la siguiente página del programa de instalación, el certificado que descargó anteriormente, de forma de que se produzca la comunicación entre el Gateway y el servicio de Advisor en la nube.




En la siguiente página resumen, tan sólo haga clic en “Install”.


Haga clic en el botón de Finish, una vez la instalación finalice exitosamente.



4. Cómo instalar un agente.

Ejecute nueva vez el programa de instalación (Advisor Gateway and Agent Setup).


En la siguiente página, haga un clic en el checkbox asociado a “Agent”, para indicar al programa de instalación que proceda a instalar el agente.
En la página de bienvenida haga clic en el botón de Next, y luego acepte el acuerdo de licenciamiento en la siguiente página.
En la página del programa de instalación denominada “Destination Folder”, especifique donde el agente será instalado.

En la página del programa de instalación denominada “Agent Settings”, provea por favor el nombre del servidor de Gateway.





En la siguiente página resumen, tan sólo haga clic en “Install”.





5. Cómo autorizar agentes para acceder al Gateway.
Haga uso del siguiente procedimiento para autorizar a los agentes a acceder al Gateway.




6. Haciendo uso de System Center Advisor.

Visite el sitio Web de Microsoft System Center Advisor, e ingrese al mismo.





Tan pronto ingrese, serán listadas todas las alertas reportadas por el agente.


Verifique  los gateways y agentes que han sido detectados.






miércoles, 20 de abril de 2011

SQL Server Security Mode.


Aplica a: Microsoft System Center Configuration Manager 2007 SP2, SQL Server 2008 SP1

Descripción del Problema.

Mientras instalabamos Microsoft System Center Configuration Manager 2007 SP2 (SCCM), nosotros recibimos la siguiente advertencia en la página con nombre "Installation Prerequisite Check" del setup de SCCM:

SQL Server security mode (warning)
The SQL Server name specified is configured for SQL authentication security. It is recommended to configure the SQL Server to operate only in Windows authentication security before continuing Configuration Manager Setup.






Causa.


La causa de esta advertencia es que la instancia de SQL Server está configurada “SQL Server and Windows Authentication Mode”. Los requerimientos del programa de instalación de SCCM requieren que la instancia SQL Server este configurada con "Windows Authentication mode".


Solución.


Cambie el modo de seguridad de la instancia de SQL Server de la siguiente forma:

1. En Object Explorer de SQL Server Management Studio, haga clic derecho en el nombre del servidor, y seleccione Properties (Propiedades).

2. En la página de Security (Seguridad) del diálogo, bajo Server authentication, por favor seleccione "Windows Authentication mode".





3.En el diálogo de Server Properties, haga clic en OK.


Reiniciar el servicio de SQL Server es requerido tras este procedimiento.

Vuelva al programa de instalación de SCCM y ejecute el botón de "Run Check", para de esta forma verificar que la advertencia haya sido elimininada.

sábado, 9 de abril de 2011

Replica is inconsistent.

Aplica: Data Protection Manager (DPM) 2010, Microsoft SQL Server 2008.

Descripción del problema.

Nosotros protegimos una instancia de SQL Server 2008 SP2 con Data Protection Manager (DPM) 2010 hace unos días, y hoy nos encontramos con un error en DPM 2010 Administrator Console que dice “Replica is inconsistent” en la columna “Protection Status” de una de las bases de datos que teníamos protegida de esa instancia.










Causa.

La causa de este mensaje de error fue que la base de datos fue renombrada en la tarde del día ayer.


Solución.

Elimine la base de datos del "protection group" y vuelve a añadirla ya con el nuevo nombre.

viernes, 1 de abril de 2011

Usando Integración CLR en SQL Server 2005

Usando Integración CLR en SQL Server 2005.


1.    Escribamos un programa “Hello World”

using System;
using System.Data;
using Microsoft.SqlServer.Server;
using System.Data.SqlTypes;

public class HelloWorldProc
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void HelloWorld()
    {
        SqlContext.Pipe.Send("Hello world!\n");
    }
}

 2.    Compilemos el procedimiento almacenado "Hello World"

 


3.    Abra SQL Server Management Studio y elija crear un nuevo "query", y habilite Integración CLR como se muestra en la imagen debajo.


Luego, cree el ensamblado en SQL Server.





Los permisos que puede configurar son:

  • SAFE: Solamente código que corre dentro de del proceso de SQL puede ser ejcutado.
  • EXTERNAL_ACCESS: Cuando el ensamblado necesita acceso a archivos, redes, variables ambientales y el registry.
  • UNSAFE: Cuando el ensamblado necesita acceso a el subsistema Win32, o acceso no restringido a recursos, tanto dentro como fuera de una instancia de SQL Server.


Para verificar la existencia del ensamblado, consulte la tabla de sys.assemblies.




Ahora usted puede acceder al método HelloWorld haciendo uso de la instrucción T-SQL CREATE PROCEDURE.




Ejecute el procedimiento almacenado (stored procedure) como ejecutaría cualquier otro procedimiento almacenado.


Si le gustaría eliminar el procedimiento almacenado y el ensamblado, proceda a efectuar lo siguiente:


  

Referencias.