Uso de Copilot en SQL Server Management Studio

Completado

SQL Server Management Studio (SSMS) admite dos asistentes de codificación con tecnología de IA que le ayudan a escribir, optimizar y solucionar problemas de código T-SQL . GitHub Copilot proporciona asistencia general de codificación en varios lenguajes, mientras que Copilot ofrece sugerencias específicas de la base de datos específicas de la instancia de SQL Server conectada.

Ambas herramientas usan modelos de lenguaje de gran tamaño para acelerar el desarrollo de bases de datos. GitHub Copilot destaca en la finalización del código y el reconocimiento de patrones en todo el código base, mientras que Copilot aprovecha el esquema de la base de datos, los índices y las estadísticas para proporcionar asistencia T-SQL contextualmente compatible.

Estos asistentes de inteligencia artificial hacen que el desarrollo de bases de datos sea más accesible y mejore la productividad de los desarrolladores nuevos y experimentados. Tanto si está escribiendo consultas, depurando código o optimizando el rendimiento, la asistencia con tecnología de inteligencia artificial le ayuda a centrarse en resolver problemas empresariales en lugar de recordar la sintaxis.

Uso de GitHub Copilot en SSMS

GitHub Copilot en SSMS lleva la finalización y generación de código con tecnología de IA al flujo de trabajo de desarrollo de bases de datos. Como asistente de codificación de uso general, GitHub Copilot le ayuda a escribir T-SQL más rápido al sugerir código a medida que escribe y genera consultas completas a partir de comentarios de lenguaje natural.

Descripción de las funcionalidades de GitHub Copilot

GitHub Copilot proporciona varias características para el desarrollo de SQL Server:

  • Finalización de código insertado: sugerencias en tiempo real al escribir código T-SQL
  • Lenguaje natural a código: Escribir comentarios que describan la intención, obtener consultas funcionales
  • Sugerencias de varias líneas: Generar bloques de consulta completos, procedimientos o funciones
  • Reconocimiento de patrones: Obtenga información sobre el estilo de codificación y los patrones comunes en el área de trabajo
  • Consciente de contexto: Considera el código que has escrito en el archivo actual.
  • Compatibilidad con varios idiomas: Funciona con T-SQL, PowerShell, Python y otros lenguajes usados en proyectos de base de datos

GitHub Copilot analiza el archivo actual, las pestañas abiertas y el área de trabajo para proporcionar sugerencias pertinentes. Aunque no se conecta directamente a la base de datos, reconoce patrones de sintaxis de T-SQL y prácticas comunes de desarrollo de bases de datos.

Habilitación de GitHub Copilot en SSMS

Para usar GitHub Copilot en SQL Server Management Studio:

  1. Asegúrese de que tiene instalado SSMS 19.3 o posterior
  2. Instalación de la extensión De Copilot de GitHub desde el menú Extensiones
  3. Inicie sesión con su cuenta de GitHub que tenga una suscripción activa de GitHub Copilot
  4. Configurar sus preferencias en Herramientas > Opciones > de GitHub Copilot

Nota:

GitHub Copilot requiere una suscripción de pago (individual, empresarial o empresarial). Algunas organizaciones proporcionan GitHub Copilot para sus desarrolladores como parte de su licencia de herramientas de desarrollo.

Escribir código con sugerencias en línea

GitHub Copilot proporciona sugerencias a medida que escribe:

-- Start typing a query
SELECT c.CustomerName, 
-- Copilot suggests: c.Email, c.Phone, c.City
-- Press Tab to accept

-- Or write a comment describing what you need:
-- Get total sales by product category for last quarter

-- Copilot generates:
SELECT 
    p.Category,
    SUM(od.Quantity * od.UnitPrice) AS TotalSales
FROM Products p
INNER JOIN OrderDetails od ON p.ProductID = od.ProductID
INNER JOIN Orders o ON od.OrderID = o.OrderID
WHERE o.OrderDate >= DATEADD(QUARTER, -1, GETDATE())
GROUP BY p.Category
ORDER BY TotalSales DESC;

El texto de fantasma gris muestra las sugerencias de Copilot. Presione Tab para aceptar o Esc para descartar.

Generación de procedimientos almacenados y funciones

Describir objetos de base de datos complejos en comentarios:

-- Create a stored procedure to calculate customer lifetime value
-- Parameters: @CustomerID int
-- Returns: @TotalValue money, @OrderCount int, @FirstOrderDate date, @LastOrderDate date

-- GitHub Copilot generates:
CREATE PROCEDURE sp_GetCustomerLifetimeValue
    @CustomerID INT
AS
BEGIN
    SELECT 
        @CustomerID AS CustomerID,
        SUM(od.Quantity * od.UnitPrice) AS TotalValue,
        COUNT(DISTINCT o.OrderID) AS OrderCount,
        MIN(o.OrderDate) AS FirstOrderDate,
        MAX(o.OrderDate) AS LastOrderDate
    FROM Orders o
    INNER JOIN OrderDetails od ON o.OrderID = od.OrderID
    WHERE o.CustomerID = @CustomerID
    GROUP BY o.CustomerID;
END;

GitHub Copilot comprende los patrones de procedimientos y genera código ejecutable completo.

Exploración del esquema de la base de datos

GitHub Copilot ayuda a escribir consultas para explorar la estructura de la base de datos:

-- Show all foreign key relationships for Orders table

-- Copilot suggests:
SELECT 
    fk.name AS ForeignKeyName,
    OBJECT_NAME(fk.parent_object_id) AS TableName,
    COL_NAME(fkc.parent_object_id, fkc.parent_column_id) AS ColumnName,
    OBJECT_NAME(fk.referenced_object_id) AS ReferencedTable,
    COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id) AS ReferencedColumn
FROM sys.foreign_keys fk
INNER JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id
WHERE OBJECT_NAME(fk.parent_object_id) = 'Orders'
   OR OBJECT_NAME(fk.referenced_object_id) = 'Orders';

Aprenda de sus patrones de codificación

GitHub Copilot se adapta a tu estilo a lo largo del tiempo. Si usa constantemente convenciones de nomenclatura, formato o patrones específicos, Copilot los incorpora en sugerencias:

-- If you typically write your queries like this:
SELECT 
    c.CustomerID
    ,c.CustomerName
    ,c.Email
FROM Customers AS c
WHERE c.IsActive = 1;

-- Copilot learns your style and suggests:
SELECT 
    o.OrderID
    ,o.OrderDate
    ,o.TotalAmount
FROM Orders AS o
WHERE o.Status = 'Completed';

Esta personalización hace que las sugerencias se sientan más naturales y reducen la necesidad de formato manual.

Aplicación de procedimientos recomendados de GitHub Copilot

Maximizar la eficacia de GitHub Copilot:

Práctica Description
Escribir comentarios descriptivos Los comentarios claros y específicos generan mejores sugerencias de código
Uso de nombres significativos Los nombres descriptivos de tabla y columna ayudan a Copilot a comprender el contexto
Desglosar tareas complejas Escribir varios comentarios para procedimientos complejos en lugar de un bloque grande
Revisar todas las sugerencias Validar siempre el código generado para la corrección y la seguridad
Proporcionar ejemplos Incluir datos de ejemplo o salida esperada en los comentarios
Mantener el contexto cerca Abrir archivos o esquemas relacionados para dar más contexto a Copilot
Revisar sugerencias continuamente Si la primera sugerencia no es correcta, pruebe a modificar el comentario.

Uso de Copilot en SSMS

Copilot en SSMS proporciona asistencia de inteligencia artificial compatible con la base de datos que se conecta directamente a la instancia de SQL Server. A diferencia de GitHub Copilot, Copilot tiene acceso al esquema de la base de datos, los índices, las estadísticas y los metadatos, lo que permite sugerencias de T-SQL más precisas contextualmente.

Captura de pantalla que muestra GitHub Copilot en SQL Server Management Studio con finalización de código con tecnología de IA.

Descripción de las funcionalidades de Copilot

Copilot ofrece características específicas de la base de datos:

  • Sugerencias compatibles con el esquema: Conoce las estructuras, columnas y tipos de datos exactos de la tabla
  • Optimización de consultas: Analiza los planes de ejecución y sugiere mejoras en el rendimiento.
  • Consultas de lenguaje natural: Convierte preguntas en T-SQL en función de la base de datos real.
  • Explicar las consultas: Describe lo que hacen las consultas existentes en lenguaje sin formato
  • Corrección de errores: Proporciona sugerencias contextuales cuando se produce un error en las consultas
  • Recomendaciones de índice: Sugiere índices basados en las estadísticas de la base de datos.

Dado que Copilot se conecta a la base de datos, genera código que funciona con su esquema específico sin modificaciones.

Consulta con lenguaje natural

Formule preguntas sobre los datos mediante inglés sin formato:

-- Ask Copilot: "Show customers who placed more than 5 orders last month"

-- Copilot generates (using your actual schema):
SELECT 
    c.CustomerID,
    c.CustomerName,
    c.Email,
    COUNT(o.OrderID) AS OrderCount
FROM Customers c
INNER JOIN Orders o ON c.CustomerID = o.CustomerID
WHERE o.OrderDate >= DATEADD(MONTH, -1, GETDATE())
    AND o.OrderDate < DATEADD(DAY, 1, EOMONTH(DATEADD(MONTH, -1, GETDATE())))
GROUP BY c.CustomerID, c.CustomerName, c.Email
HAVING COUNT(o.OrderID) > 5
ORDER BY OrderCount DESC;

Copilot conoce los nombres exactos de las tablas y columnas, lo que garantiza que la consulta funciona inmediatamente.

Optimización del rendimiento de las consultas

Copilot analiza las consultas y sugiere mejoras:

-- Select a slow query and ask: "How can I make this faster?"

-- Original query:
SELECT c.CustomerName, SUM(od.Quantity * od.UnitPrice) AS Total
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID
LEFT JOIN OrderDetails od ON o.OrderID = od.OrderID
WHERE o.OrderDate >= '2024-01-01'
GROUP BY c.CustomerName;

-- Copilot suggests:
-- 1. Change LEFT JOIN to INNER JOIN (WHERE filters out NULLs anyway)
-- 2. Add covering index: CREATE INDEX IX_Orders_Date ON Orders(OrderDate, CustomerID, OrderID)
-- 3. Consider indexed view for frequent aggregations

-- Optimized query:
SELECT c.CustomerName, SUM(od.Quantity * od.UnitPrice) AS Total
FROM Customers c
INNER JOIN Orders o ON c.CustomerID = o.CustomerID
INNER JOIN OrderDetails od ON o.OrderID = od.OrderID
WHERE o.OrderDate >= '2024-01-01'
GROUP BY c.CustomerName
OPTION (RECOMPILE);

Descripción y corrección de errores

Cuando se produce un error en las consultas, Copilot explica el problema y proporciona correcciones:

-- Query with error:
SELECT CustomerName, SUM(TotalAmount)
FROM Orders;

-- Error: Column 'Orders.CustomerName' is invalid in the select list

-- Ask Copilot: "What's wrong with this query?"

-- Copilot explains and fixes:
/*
The error occurs because CustomerName is not in an aggregate function or GROUP BY clause.
When using aggregate functions like SUM(), all non-aggregated columns must be grouped.
*/

-- Corrected query:
SELECT CustomerName, SUM(TotalAmount) AS Total
FROM Orders
GROUP BY CustomerName;

Elección de la herramienta correcta

Ambas herramientas ofrecen valor para el desarrollo de SQL Server:

Característica GitHub Copilot Copilot
Reconocimiento del esquema de la base de datos No
Compatibilidad con varios lenguajes Enfoque de T-SQL
Optimización de las consultas Basado en patrones Específico de la base de datos
Funciona fuera de SSMS No
Requiere conexión de base de datos No
Subscription GitHub Copilot Copilot

Use GitHub Copilot para el desarrollo general de T-SQL, los proyectos de varios lenguajes y la finalización de código en todo el código base. Use Copilot para tareas específicas de la base de datos en las que el reconocimiento de esquemas, la optimización de consultas y la interacción directa de la base de datos proporcionan mejores resultados.

Muchos desarrolladores usan: GitHub Copilot para codificación diaria y Copilot al trabajar con instancias de base de datos específicas. Juntos, estos asistentes de inteligencia artificial aceleran el desarrollo de bases de datos al tiempo que se mantienen los estándares de calidad y seguridad del código.