viernes, 24 de julio de 2015

Como violar un autonumerico en MS SQL

Supongamos que tienes una tabla de usuarios cuyo identificador es un autonumerico. Pero te entregan una lista para cargar donde los usuarios tienen un numero como identificador pero no parten del 1 y hay usuarios que no existen por ejemplo (1,2,7,8,9, etc).  Y otra condición es que después de la carga inicial, se debe seguir usando el autonumerico para la asignación de códigos partiendo de n numero.

En esos casos se pueden usar la instrucciones:
SET IDENTITY_INSERT y DBCC CHECKIDENT

SET IDENTITY_INSERT
Permite insertar valores explícitos en la columna identidad de una tabla.

DBCC CHECKIDENT
Comprueba el valor de identidad actual de la tabla especificada, si fuera necesario, lo cambia. También puede utilizar DBCC CHECKIDENT para establecer manualmente un nuevo valor de identidad actual para la columna de identidad.

Sintaxis SET IDENTITY_INSERT
SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }


Donde
  • database_name : nombre de la base de datos
  • schema_name : nombre del esquema
  • table  : nombre de la tabla


Ejemplo de uso
SET IDENTITY_INSERT [dbo].[Tu_tabla] ON
INSERT INTO Tu_tabla (3,...)
SET IDENTITY_INSERT [dbo].[Tu_tabla] OFF

La segunda parte del requerimiento de dejar establecido desde que numero se generaran los autonumerico se puede hacer con la instruccion: DBCC CHECKIDENT

Sintaxis
DBCC CHECKIDENT  (table_name [, { NORESEED | { RESEED [, new_reseed_value]}}])
[ WITH NO_INFOMSGS ]

Donde
  • table_name : nombre de la tabla
  • NORESEED : Especifica que el valor de identidad actual no se debe cambiar.
  • RESEED : Especifica que el valor de identidad actual se debería cambiar.
  • new_reseed_value : Es el nuevo valor que se va a usar como valor de identidad actual de la columna de identidad.\
  • WITH NO_INFOMSGS : Suprime todos los mensajes de información.
Ejemplo de Uso:

Para saber el valor identidad
DBCC CHECKIDENT ('Usuario', NORESEED)

Para poner como valor de identidad de la tabla Usuario el 100
DBCC CHECKIDENT ('Usuario',reseed,100)


Mas Información:
https://msdn.microsoft.com/es-es/library/ms188059%28v=sql.120%29.aspx
https://msdn.microsoft.com/es-es/library/ms176057(v=sql.120).aspx

jueves, 23 de julio de 2015

Keyword not supported: 'server'

Cambie la cadena de conexión de una aplicación MVC4 Entity Framework  ya publicada. Y al ejecutarla me empezó a aparecer este error:

Keyword not supported: 'server'.

La cadena  que pasaba como parámetro estaba bien formada. Y es la que genera el asistente de cadenas de conexión del IIS.


Server=192.168.x.xx;Database=DBNombre;User ID=UrApp;Password=●●●●●●●

Aun así no funcionaba. De modo que volví a la cadena original y cambie solo los parámetros que cambiaban:

metadata=res://*/Models.Model.csdl|res://*/Models.Model.ssdl|res://*/Models.Model.msl;provider=System.Data.SqlClient;provider connection string="data source=192.168.xxx.xxx;initial catalog=BaseDatos;user id=usuario;password=tupassword;MultipleActiveResultSets=True;App=EntityFramework"

La ultima cadena funciona correctamente.

miércoles, 22 de julio de 2015

ERROR_APPPOOL_VERSION_MISMATCH

Estoy actualizando una aplicación web (MVC4/MS SQL 2012), desde Visual Studio (2012). Y al momento de publicar (botón derecho sobre el proyecto en el explorador de proyectos de VS - Publish). Se cae la operación por este error: ERROR_APPPOOL_VERSION_MISMATCH.

La aplicación funciona con el frameword 4.5 osea el pool framework 4 en IIS me sirve. En VS la aplicación esta configurada con ese framework y no se hasta ahora donde esta el problema.


La primera validación que hago es ver si en el IIS esta configurado con el pool que me sirve.
 
1.Seleccionar aplicacion en IIS
2.En el panel de la derecha Acciones pinchar sobre Configuración Avanzada.
3.En la ventana de Configuración Avanzada  ver si Grupo de Aplicaciones esta configurado correctamente en mi caso espero ASP.NET v4.0 Classic lo cambio y funciona ok.





HTTP Error 404.2 - Not Found


Según Microsoft el error  HTTP Error 404.2 - Not Found se debe ha:

Este problema se produce porque el recurso solicitado de la API de servidor Internet (ISAPI) o el recurso solicitado de Common Gateway Interface (CGI) está restringido en el equipo que está ejecutando IIS 7.0.


Para solucionar este problema se debe ir al IIS (Inicio - Ejecutar -- inetgmr -- seleccionar el servidor -- ir a Seguridad -- doble clic sobre Restricciones de ISAPI y CGI)


Y habilitar los componentes que necesita la aplicación

En mi caso habilite la versión de 64 bits de ASP.NET v4... y funciono perfecto.




No databases are selected to publish

Estoy publicando una aplicación MVC4 con base de datos MS SQL 2012. Uso Visual Studio 2012. Y tengo el siguiente problema (el cual dejare registrado como soluciono en este post). La opción Publish de VS publica la aplicación pero no ejecuta los scripts para crear la base de datos, que es lo que espero de esta operación. El mensaje del dialogo Publish es:

No databases are selected to publish


Si bien tenia configurado la opción Package/Publish SQL (botón derecho sobre el proyecto y seleccionar Properties), fue necesario crear nuevamente un perfil  en la opción Publish de VS (Botón derecho sobre el proyecto y seleccionar Publish) y volver a ingresar estos para que apareciera seleccionada una base de datos en el dialogo.




Si bien es cierto aparece una base seleccionada, persiste el problema de que si vuelvo a ejecutar la opción Publish se pierden la base de datos. Por lo que obliga a borrar el Perfil e ingresar los datos. Cuando tenga la solución a este ultimo punto actualizare este post.

martes, 21 de julio de 2015

Web deployment task failed

Necesito publicar una aplicación Web hecha en .Net con MVC 4. Pero no quiero ir al servidor y copiar los archivos y configurar, sino hacerlo todo desde mi equipo de desarrollo. Al tratar de hacer lo anterior (botón derecho sobre el proyecto /y Publicar en Visual Studio) me aparece el siguiente error:
 Web deployment task failed
Entonces voy al servidor remoto a revisar si existe y esta corriendo el siguiente servicio:

Web Deployment Agent Service

No existe. La pregunta es: Como lo instalo?
Descargue un instalador desde la siguiente dirección:
https://technet.microsoft.com/en-us/library/dd569059(v=ws.10).aspx
Al instalarlo se debe elegir la opcion "Completa", de lo contrario no instala el servicio que es requerido.

Intento nuevamente publicar la aplicacion y me aparece el siguiente mensaje:

Error 1 Web deployment task failed. (Connected to '192.168.1.77' using the Web Deployment Agent Service, but could not authorize. Make sure you are an administrator on '192.168.1.xx'. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_NOT_ADMIN.)

Problemas de permisos.
La solución  es configurar un usuario con permisos de administrator de la maquina remota e indicar el dominio (dominio/usuario) en el dialogo  Publish \ Connection de Visual Studio.


Después haré un tutorial como publicar desde Visual Studio.




Administracion remota de IIS

Quiero administrar un servidor IIS 7 desde mi equipo (Windows 7 con IIS 7). Pero al ejecutar IIS no me aparece la opción para conectarme remotamente a otro equipo. Sin embargo , en el equipo remoto si tengo esa opción.

Equipo Remoto
Equipo Local
Busque en las opciones de instalación del IIS y no encontré algún punto acerca de conexiones remotas.

Pero encontré el siguiente link para descargar una versión que permite la conexión remota:
http://www.microsoft.com/en-us/download/details.aspx?id=41177

Y al instalarlo ya me aparece la opción de conectarme a un servidor IIS remoto.
Pero eso no es todo.
En el servidor remoto se debe autorizar las conexiones. Esto se hace en el IIS pinchando en Management Services:
Luego habilitar conexiones remotas (Enable Remote Connections). Y presionar el link de la derecha que dice "Apply". E iniciar el servicio nuevamente "presionar Start".
Luego desde el IIS cliente en el panel de conexiones, seleccionar opción conectarse a un servidor. Y luego indicar las credenciales.
Finalmente la nueva conexión remota aparecerá a continuación de la local.