2009-03-03 26 views
5

He escrito sentencias de SQL (almacenadas en un documento de texto) que cargan datos en una base de datos de SQL Server. Estas declaraciones deben repetirse diariamente. Algunas de las declaraciones usan la función NewId() para rellenar un campo con clave en la base de datos, y esto funciona bien. Mientras estoy en el proceso de escribir una aplicación para replicar estas declaraciones, quiero usar consultas y macros de Access en lugar de copiar y pegar consultas en SQL Server, ahorrándome tiempo a diario. Todo funciona bien, pero no puedo encontrar ninguna función que reemplace a la función SQL NewId(). ¿Existe uno o hay un trabajo alrededor? Estoy usando SQL Server 2005 y Access 2007.¿Hay un acceso equivalente a la función NewID de SQL Server()?

+0

"consultas de copiar y pegar en el servidor SQL, por lo tanto me ahorro de tiempo sobre una base diaria". Es posible que se sorprenda de lo que puede hacer en SQL Server para ahorrar tiempo. –

Respuesta

-2

La única solución que puedo pensar sería definir la columna en su base de datos de acceso de tipo "ID de replicación" y convertirla en un campo de autonumeración. Eso generará automáticamente un GUID único para cada fila y no necesitará usar newid() en absoluto. En el servidor SQL, simplemente crearía el valor predeterminado para la columna "newid()".

+0

Los GUID no funcionan bien en Access: http://trigeminal.com/usenet/usenet011.asp?1033. Pero no son necesarios, todo lo que se necesita es un Autonumérico. –

+0

Oops: leyó mal la pregunta original (no se dio cuenta de que NewID() generó específicamente un GUID). GUID aún no funciona bien en Access. –

+1

¿Por qué los GUIDS no funcionan bien en Access? –

1

Además de la respuesta de Matt, simplemente podría usar un pass-through query y simplemente usar sus consultas existentes y de trabajo desde MS Access.

-2

Nuevamente, parece haber confusión aquí.

Si estoy entendiendo correctamente:

Usted tiene una parte delantera de acceso.

Tiene un servidor SQL Server 2005.

Lo que necesita es la capacidad de generar el GUID en la tabla de SQL Server. Por lo tanto, las respuestas que sugieren agregar un campo Autonumérico de tipo ReplicationID en Access no van a ayudar, ya que la tabla no es una tabla Jet, sino una tabla de SQL Server.

El SQL ciertamente se puede ejecutar como una consulta de paso, que entregará todo al SQL Server para su procesamiento, pero me pregunto por qué no hay un valor predeterminado para este campo en SQL Server? ¿Las tablas de SQL Server 2005 no tienen NewId() como valor predeterminado? ¿O hay algún otro método para llenar un campo con un nuevo GUID? Me parece recordar algo sobre el uso de GUID y marcarlos "no para la replicación" (no tengo acceso a SQL Server en este momento para buscar esto).

Me parece que es mejor dejar que el motor de la base de datos haga este tipo de cosas, en lugar de ejecutar una función en su SQL para hacerlo, pero tal vez alguien me explique por qué estoy equivocado al respecto.

Cuestiones relacionadas