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()?
Respuesta
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()".
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. –
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. –
¿Por qué los GUIDS no funcionan bien en Access? –
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.
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.
Una solución sería la de insertar la función stguidgen() en su código, como se puede encontrar aquí: http://trigeminal.fmsinc.com/code/guids.bas
- 1. creando la función usando newID()
- 2. Cómo SQL Server crea uniqueidentifier usando NEWID()
- 3. ¿Es posible establecer columna predeterminada en NewId() de SQL Server?
- 4. SQLite equivalente a la función SQL Server DateAdd
- 5. newid() dentro de la función de servidor sql
- 6. C# equivalente de la función IsNull() en SQL Server
- 7. Oracle equivalente a SQL Server DATEPART
- 8. Oracle equivalente a SQL Server/Sybase DateDiff
- 9. SQL Server equivalente a EXPLAIN de MySQL
- 10. ¿Existe un Oracle equivalente a OUTPUT INSERTED de SQL Server. *?
- 11. Hashset equivalente en SQL Server
- 12. SQL Server OFFSET equivalente
- 13. ¿Hay un equivalente a la función MATLAB bsxfun en python?
- 14. ¿Hay un Python equivalente a la función PHP htmlspecialchars()?
- 15. C++ Acceso a SQL Server desde Linux
- 16. ¿equivalente StyleCop para SQL Server?
- 17. ¿Hay un equivalente a SET NOCOUNT de SQL Server en MySQL?
- 18. ¿Hay un equivalente a la función SUBSTRING en MS Access SQL?
- 19. ¿Hay un SQL Server Profiler para SQL Server Express?
- 20. ¿Hay un equivalente a SHA1() en MS-SQL?
- 21. Acceso a mensajes de SQL Server a través de ADO.NET
- 22. ¿Hay alguna función de regresión lineal en SQL Server?
- 23. SQL Server equivalente a NULLS FIRST de Oracle?
- 24. ¿Cuál es el equivalente de Oracle de la función IsNull() de SQL Server?
- 25. Equivalente de Debug.Assert para SQL Server
- 26. SQL Server: cualquier equivalente de strpos()?
- 27. SQL - ¿Hay una función UNION opuesta pero equivalente?
- 28. ¿Hay un equivalente de Profiler para MySql?
- 29. función sha256 en SQL Server
- 30. ¿Qué es el equivalente de PostgreSQL a SQL Server NVARCHAR?
"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. –