miércoles, 6 de noviembre de 2013

Replicación en SQL Server 2012



Uno de los temas más avanzados de SQL Server es la replicación, en este video tutorial te presentamos como realizar una replicación de mezcla, uno de los tres tipos posibles, Replicación de Instantaneas, Replicación de Mezcla y Replicación Transaccional.
La replicación utiliza una metáfora del sector editorial para representar los componentes de una topología de replicación, que incluyen el publicador, el distribuidor, los suscriptores, las publicaciones, los artículos y las suscripciones. Resulta útil pensar en la replicación de Microsoft SQL Server como si fuera el periodico que leemos todos los dias:
  • El publicador (editor) del periodico produce una o más publicaciones.
  • Una publicación contiene artículos.
  • El publicador distribuye el periodico directamente o a través de un distribuidor dejandolo en cada casa de los suscriptores.
  • Los suscriptores reciben las publicaciones a las que se han suscrito.
Aunque la metáfora del periodico es útil para comprender la replicación, es importante señalar que la replicación de SQL Server incluye funciones que no están representadas en esta metáfora, en nuestro ejemplo en particular, la posibilidad de que un suscriptor realice actualizaciones no es normal, es decir que un suscriptor haga cambios a los articulos de la publicación es permitido en la replicación de mezcla.

Abrir puestos del Firewall para SQL Server 2012

Script para habilitar los puertos del Firewall, lo mas practico es copiar y guardar estas instrucciones como un archivo de extensión cmd para luego poder ejecutarlo con un doble click:

@echo off
@echo This scripts sets the default firewall configurations for SQL Server components
echo.
echo Setting the core components for a database instance
echo Default Instance
netsh advfirewall firewall add rule name=”SQLServer” dir=in action=allow protocol=TCP localport=1433 profile=DOMAIN
echo Dedicated Admin Connection
netsh advfirewall firewall add rule name=”SQL DAC” dir=in action=allow protocol=TCP localport=1434 profile=DOMAIN
echo SQL Browser Service
netsh advfirewall firewall add rule name=”SQL Browser” dir=in action=allow protocol=UDP localport=1434 profile=DOMAIN
echo Setting the core firewall rules for database mirroring, service broker, TSQL Debugger, Analysis services, Reporting Services
echo Mirroring EndPoint – CHANGE PORT NUMBER AS NEEDED depending on which role
netsh advfirewall firewall add rule name=”Mirroring EndPoint” dir=in action=allow protocol=TCP localport=5022 profile=DOMAIN
echo Service Broker
netsh advfirewall firewall add rule name=”SQL Service Broker” dir=in action=allow protocol=TCP localport=4022 profile=DOMAIN
echo Enable TSQL Debugger (uses RPC)
netsh advfirewall firewall add rule name=”T-SQL Debugger” dir=in action=allow protocol=TCP localport=135 profile=DOMAIN
echo Browser service for Analysis Services
netsh advfirewall firewall add rule name=”SQL Browser for Analysis Services” dir=in action=allow protocol=TCP localport=2382 profile=DOMAIN
echo Analysis services Default Instance
netsh advfirewall firewall add rule name=”Analysis Services” dir=in action=allow protocol=TCP localport=2383 profile=DOMAIN
echo HTTP/HTTPS for reporting services
netsh advfirewall firewall add rule name=”HTTP Reporting Services” dir=in action=allow protocol=TCP localport=80 profile=DOMAIN
netsh advfirewall firewall add rule name=”HTTPS Reporting Services” dir=in action=allow protocol=TCP localport=443 profile=DOMAIN

Always on Availability Groups en SQL Server 2012




Always on Availability Groups en SQL Server 2012  es una solución de alta disponibilidad en recuperación de desastres resultado de la combinación de las soluciones de Clúster y Database Mirroring.
De “Failover Clustered” toma la parte de poder administrar recursos en grupos denominados “Availability Groups” y principalmente manejo de fallas entre nodos sin la necesidad de tener un disco compartido entre los nodos.
De “Mirroring” toma el sincronizar las  bases de datos añadiendo la facultad de poder hacer uso de las replicas secundarias, es decir estas no quedan en estado pasivo, si no son operativas.

jueves, 17 de octubre de 2013

Problemas para desinstalar Mcafee

Al comprar mi computadora ya venía con el antivirus mcafee, que funcionó perfectamente hasta que actualice mi equipo a Windows 8.1.
Como estaba presentado varios problemas haciendo procesos que gastaban recurso de mi equipo sin funcionar apropiadamente, decidí desinstalarlo pero esto no sucedió tan fácil como ir a panel de control, programas, programas y características y  desinstalarlo regularmente como cualquier programa.
Luego de indagar encontré que debía de ejecutarse primero el archivo MCPR.exe para posteriormente su desinstalación, así que aquí dejo el link para descargar este archivo de mucha utilidad. 

martes, 8 de octubre de 2013

SCRIBD



Uno de los sitios más populares para compartir documentos y descargar e-books es Scribd. Este sitio será ahora aun más popular debido a que se asoció con la compañía HarperCollins, la cual es una de las 5 editoriales más grandes del mercadoestadounidense.

Este partnership, de reciente creación, es una de las razones que están detrás de la oferta que Scribd anunció a partir del martes. En ella se explica que permitirá a los usuarios tener acceso ilimitado a todo el catálogo de e-books y demás obras publicadas, por una suscripción mensual de apenas casi $9 dólares.

Lo que Scribd busca, al igual que otras compañías, es lograr convertirse en el equivalente de Netflix o Spotify, en el mercado de los e-books. Ambas compañías valen millones de dólares.

Scribd quiere, con esta medida, incursionar con fuerza en el mercado de las suscripciones de e-books, y pegarle fuerte a su principal competidor, Oyster.


domingo, 22 de septiembre de 2013

PowerView




 Power View permite la visualización rápida y fácil de sus datos al tiempo que permite el intercambio y la colaboración de las ideas de negocios en el ambiente familiar de SharePoint Server y ahora se incluye en Excel 2013, agregando un potencial increible a la generación de reportes en ambientes que el usuario usa tradicionalmente.

Power Pivot Para Excel 2010


PowerPivot para Excel es un complemento para Excel 2010 . PowerPivot permite a los usuarios realizar poderosos analisis de inteligencia de negocios(BI ) en un ambiente que es familiar .

Es una descarga gratuita de Microsoft para Excel 2010 y ya viene incluido en Excel 2013 y permite a los usuarios trabajar con conjuntos de datos muy grandes, anteriormente esta herramienta se limitó a las herramientas de BI empresariales, tales como SAS y Business Objects .

PowerPivot utiliza un motor en memoria llamado inicialmente VertiPaq ahora llamado Xvelocity. Este nuevo motor de SSAS se aprovecha del aumento de RAM disponible en la mayoría de los ordenadores personales hoy en día. La mayoría de los departamentos de TI se enfrentan al reto de contar con los recursos necesarios para construir entornos de inteligencia empresarial, PowerPivot permite llevar esta inteligencia al mismo usuario que necesita consumir los datos y que obtenga su propia información de manera amigable.

lunes, 19 de agosto de 2013

Cuarta Forma Normal



Explicación fácil y practica de la Cuarta Forma Normal de Base de Datos y el significado de dependencias multivaluadas, que para mi gusto se explicaría mejor definiéndolas como dependencias de múltiples valores.

miércoles, 17 de julio de 2013

Consideraciones a tener en cuenta para Modificar Una Tabla Con el SQL Server Management Studio.

Para crear una Tabla usando la herramienta grafica del SQL Management Studio, simplemente hacemos clic derecho sobre el contenedor de tablas y elegimos Nueva Tabla.
 
 
Creamos la tabla con los campos requeridos y su respectivo tipo de dato, también debemos de establecer la  llave primaria necesaria.
 
Guardamos la tabla y para nuestro ejemplo en la imagen  llamaremos a esta tabla factura

 
 
El problema ahora es que si  intentamos modificar la tabla SQL no nos lo permitirá hacer, para probar esto haremos clic derecho sobre la tabla y luego eligiendo  diseño, abriremos la tabla para modificarla.
 

 
Para nuestro ejemplo, simplemente modificaremos el tamaño de un campo de tipo nvarchar, luego de hacer la modificación y guardar, SQL Server nos devolverla un error.

 
 



Sin embargo si es posible realizar la modificación ya que si lo hacemos a través de código Transact SQL no hay ningún problema.



 
 
Entonces la pregunta es ¿Qué debemos hacer para poder efectuar el cambio usando la herramienta grafica del SQL Server Management Studio? la respuesta tiene que ver con modificar las opciones predeterminadas del SQL Server. Para esto hacemos clic en el menú de herramientas y luego clic en opciones. En el cuadro de dialogo que nos aparece buscamos la opción de “Diseño” y allí desactivamos la casilla de verificación en “Impedir Guardar Cambios que requieran volver a crear tablas” y con esto listo ya podemos efectuar cambios en nuestra tabla y guardarlos.
 

viernes, 28 de junio de 2013

Power Pivot



PowerPivot es una herramienta para el análisis de información cuya principal ventaja es la posibilidad de trabajar con cantidades masivas de datos utilizando Excel como interfaz de usuario, por lo que se convierte en una atractiva oferta, dado el poder de la hoja de calculo mas importante del mercado. Permite relacionar diferentes orígenes de datos, transformarlos y relacionarlos y mediante la utilización de las tablas dinámicas confeccionar nuevos informes, gráficos o indicadores para analizar mejor los diferentes problemas empresariales y tomar las mejores decisiones al respecto de forma muy práctica y económica.

sábado, 15 de junio de 2013

Laboratorio de Active Directory y Group Policy



Clase grabada del 1 de Junio del Diplomado de Tecnología de redes Windows, donde se repasa con un laboratorio la promoción de un servidor a controlador de dominio, se unen maquinas al dominio y se aplican políticas.
En la demostración se aplican políticas de establecimiento de un papel tapiz, ejecución de un script al iniciar sesión, publicación de software a una unidad organizativa y se comprueba la jerarquía de Sitio, Dominio y Unidad Organizativa en el establecimiento de estas políticas.

martes, 11 de junio de 2013

Historia las Bases de Datos Relacionales con SQL y SQL Server de Microsoft

Un tema que me apasiona mucho, son las bases de datos, que en nuestro mundo de hoy son vitales y están presentes en casi cualquier actividad, en las finanzas de una empresa para llevar su registro de gastos e ingresos, en las universidad para llevar el control de notas de los alumnos, cuando vamos al cajero automático a sacar dinero estamos accediendo a la base de datos del banco y así podemos mencionar un sin número de actividades donde las bases de datos son vitales,    por esta razón  es  importante contar con los conceptos fundamentales si nuestro rol es administrativo y si es informático es un punto obligado, pero cuál es el origen de las bases de datos que usamos hoy en día y en especial del SQL Server de Microsoft, que por cierto usamos el modelo relacional. Pues déjenme contarles la historia.

En 1970 Edgar “Ted” Codd, matemático empleado por IBM, escribió un artículo que cambiaría todo lo anterior en bases de datos.  Codd propuso el modelo relacional y asociado a este un sub-lenguaje de acceso a los datos basado en el cálculo de predicados, en ese momento de la historia IBM tenía intereses en otro sistema, el IMS, un confiable y muy especializado sistema de base de datos que apareció en 1968 y que le rendía considerables ganancias, por lo que no se percató que las teorías de Codd encenderían una revolución tecnológica comparable al  internet o el perfeccionamiento de las computadoras personales.

Entonces Codd organizo un simposio donde redujo complicados programas de cinco páginas a un reglón, lo cual fue sensacional, el simposio convecino a IBM de patrocinar el sistema R, proyecto que construyo el sistema relacional y el lenguaje SEQUEL (Structured English Query Language) que posteriormente llevaría a la creación de SQL, sin embargo IBM al considerar que su mercado potencial  estaba con IMS engaveto por muchos años a sistema R y le dio libertad a Ted Codd para publicar sus artículos científicos.

Entre las personalidades en las que hizo eco las teorías de Codd estaba Larry Ellison, que acababa de crear una compañía, reclutando programadores del sistema R y de la universidad de California, lo que hizo que en 1979 Ellison pudiera vender la primera base de datos relacional mucho antes que IBM, posteriormente Ellison llamo a su empresa ORACLE

El SQL pasa a ser el lenguaje por excelencia de los diversos sistemas de gestión de bases de datos relacionales surgidos en los años siguientes como Sybase,  Postgrate, DB2 y es por fin estandarizado en 1986 por el ANSI, dando lugar a la primera versión estándar de este lenguaje, el "SQL-86" o "SQL1". Al año siguiente este estándar es también adoptado por la ISO.

Sin embargo, este primer estándar no cubre todas las necesidades de los desarrolladores e incluye funcionalidades de definición de almacenamiento que se consideró suprimirlas. Así que, en 1992, se lanzó un nuevo estándar ampliado y revisado del SQL llamado "SQL-92" o "SQL2".

En la actualidad el SQL es el estándar de la inmensa mayoría de los Sistemas Gestores de Base de datos comerciales. Y, aunque cada implementación comercial del lenguaje agrega características particulares, el soporte al estándar SQL-92 es general y muy amplio.
 

El SQL SERVER DE MICROSOFT


La aparición de Microsoft en el mundo de los SGBD basados en SQL se da en 1988  cuando en colaboración con SyBase , IBM y  Ashton-Tate, Microsoft decide crear  un sistema de gestión de base de datos para el sistema operativo OS/2,  sistema en el cual era copropietario junto con IBM, tiempo después se desarrolló la versión para Windows  NT en el año de 1993,  en ese entonces era un producto muy básico para todo el potencial que ha alcanzado hoy en día.

Al año siguiente en 1994 Sybase y Microsoft deciden dar por terminada su colaboración y SyBase se dedica al desarrollo de su base de dato y Microsoft a la suya.

Después de la separación un año más tarde en 1995 Microsoft Lanza su primera versión independiente y como único propietario y desarrollador de SQL Server con la versión  Microsoft SQL Server 6.0 una versión mejorada principalmente en rendimiento, y en el año de 1996 se lanza la versión Microsoft SQL Server 6.5 una versión que se mantuvo vigente 2 años antes de sacar una nueva versión en 1998, la 7.0 versión que  realizar mejoras considerables en cuanto usabilidad, potencia y rendimiento, convirtiéndose en una de las versiones más fuertes,  su avance fue tan significativo que pudo competir a sistemas como ORACLE o el propio DB2, y poco a poco colocarse como una propuesta atractiva a empresas que manejaban grandes volúmenes de datos por su funcionalidad y costo,  esta versión permaneció estable y con ligeras actualizaciones hasta el desarrollo de Microsoft SQL Server 2000 versión que  incorpora ediciones para diferentes roles comerciales una de ellas la edición de 64  bits, workgroup, desktop engine, profesional, personal, standard, developer, Enterprise, etc. y durante los siguientes 5 años comenzó a causarle delirios de persecución a los gigantes de las bases de datos como ORACLE,  IBM con DB2, SyBase, entre otros.

Para  la versión 2005 de SQL Server ya es un sistema gestor líder en el mercado, que permite desarrollar aplicaciones innovadoras, con herramientas de alta disponibilidad, escalabilidad, integración de datos, gestión y además con un poderoso conjunto de funciones de Inteligencia de Negocios para el  análisis y obtención de datos comprensibles superando por mucho en esta área a los otros productos en el mercado.

domingo, 19 de mayo de 2013

SQL SERVER AGENT


El Agente SQL Server funciona como un servicio de Windows y permite ejecutar trabajos programados o como respuesta a un evento específico. Por ejemplo, si deseamos realizar un Backup de todos los servidores de la empresa todos los días después del horario de trabajo, puede automatizar esta tarea con el SQL Server Agent y evitar el error humano de asignar esta tarea a una persona.

Para esto el Agente se vale de Trabajos, Alertas, Operadores.

Los Trabajos que son una serie de  tareas definidas, con secuencia lógica, se programan en un horario y frecuencia.

Alerta es una respuesta automática a un evento específico, que puede ser de un objeto de SQL o ocasionado por el rendimiento del Servidor.

Operador es el usuario al que se le envía la notificación disparada por una alerta o por una acción de un trabajo.
También se cuenta con las cuentas Proxy que permiten que una tarea de un trabajo que deba ejecutarse fuera de SQL como llamar a un EXE en sistema operativo, por ejemplo, se ejecute a través de estas cuentas Proxy, asociando una cuenta de windows con una de sql.

En este vídeo tutorial haremos una demostración del SQL Server Agent.

lunes, 6 de mayo de 2013

Que es un Proyecto?

Un proyecto, es normalmente un trabajo no repetitivo que requiere ser planificado con objetivos con costos y con tiempos definidos, en el que participan diferentes recursos, con un principio y un final definidos
Las características que tiene el proyecto es que es un trabajo de importancia, que requiere esfuerzos de inversión encaminados a producir resultados de trascendencia , requiere también medios importantes y variados de distintas partes de la organización,

Hay determinadas compañías que se rigen por proyectos,  teniendo claro en distinguir en las actividades continuas  repetitivas y un proyecto es una actividad que no se puede dar con un enfoque tradicional.

La importancia del proyecto tiene un efecto dinamizador en los equipos de trabajo a la gente nos gusta movernos por objetivos, las fechas límites tienen un efecto importante, cuando normalmente nos marcan una fecha determinada en la que tenemos que conseguir ciertos hitos eso mueve hacia la acción, hacia determinadas conductas para cumplir el objetivo.

El objetivo de un proyecto es cumplir con un resultado, dentro de un plazo y con determinado presupuesto, si no se cumplen estos tres elementos los proyectos fracasan.



martes, 19 de febrero de 2013

Clásico Trigger para Actualizar Inventario



Clásico Trigger para actualizar inventario
 

 
 
Cada vez que se efectua una orden (orders) en el detalle de la orden (order details) se almacenan los productos pedidos (productid) y su cantidad (quantity), la cantidad pedida de un producto en el detalle de la orden (order details) debe rebajarse de las Unidades en Inventario  (UnitInStock de la tabla products) de los Productos.
La modificación al inventario se da cada vez que se afecta la tabla detalle de la orden (order details) porque si vendo un producto tengo que hacer una inserción del producto que estoy vendiendo y debe rebajar al inventario (UnitsInStock).  Si borro una fila de la tabla detalle de la orden (order details) porque el cliente ya no quiere ese producto lo esta devolviendo por lo que debe volver a cargarle las unidades al inventario. Y si el cliente en una orden ya hecha ya no quiere cinco unidades de un producto si no 10 entonces debo regresarle al inventario las  5 unidades pedidas anteriormente y luego restarle 10 (a si funciona con los triggers).
Para que este caso se pueda resolver con un trigger debemos tener en cuenta que:
1. Los triggers se ponen sobre la tabla detalle de ordenes (order details) y son varios triggers no solo uno, dicho sea de paso la tabla puede tener mas de un trigger asociado
2. Cuando se inserta un dato en una tabla en SQL Server se crea una tabla temporal con la misma estructura de la tabla donde estoy insertando que se llama inserted esta tabla temporal tiene el dato que se esta insertando.
Igual ocurre cuando se elimina un dato, se crea una tabla temporal que se llama deleted que tiene la misma estructura de la tabla donde estoy borrando y el o los datos que se están eliminando. Y cuando ocurre un Update se crean las dos tablas con la misma estructura de la tabla donde estoy haciendo update, Deleted e Inserted donde deleted tiene el dato antiguo a modificar e inserted tiene el nuevo dato.
3. Cuando se hace un nuevo pedido y se insertan a la tabla detalle de ordenes (order details) el producto y las unidades a pedir debemos tener en cuenta que el trigger se vale de la tabla inserted que se crea con la misma estructura que [order details] para obtener el producto (productid) y la cantidad (quantity) pedida que debe debitar de unidades en estock. Y el trigger quedaria de la siguiente forma:
Create trigger Debitar_Stock
on [order details]
for Insert
as
Update P set P.UnitsInStock=P.UnitsInStock-D.Quantity
from products as P inner join
INSERTED as D on D.ProductID=P.ProductID
4. Cuando es necesario eliminar un registro a la tabla detalle de ordenes (order details) debemos tener en cuenta que el trigger se vale de la tabla deleted que se crea con la misma estructura que [order details] para obtener el producto (productid) y la cantidad (quantity) eliminada que debe regresar a las  unidades en estock. Y el trigger quedaría de la siguiente forma:
Create trigger Regresar_Stock
on [order details]
for Delete
as
Update P set P.UnitsInStock=P.UnitsInStock+D.Quantity
from products as P inner join
DELETED as D on D.ProductID=P.ProductID
 
5. Y cuando ocurre un update se crean las dos tablas Deleted con el dato antiguo a modificarse y Inserted con el dato nuevo que va a modificar por lo que el trigger debe de regresar a inventario lo que esta en Deleted y luego volver a debitar lo que esta en inserted.
Create trigger Actualizar_Stock
on [order details]
for Updete
as
Update P set P.UnitsInStock=P.UnitsInStock+D.Quantity
from products as P inner join
DELETED as D on D.ProductID=P.ProductID
 
Update P set P.UnitsInStock=P.UnitsInStock-D.Quantity
from products as P inner join
INSERTED as D on D.ProductID=P.ProductID
 
 
 
 

jueves, 14 de febrero de 2013

Red Ad-Hoc Inalámbrica


Red Ad-Hoc Inalámbrica
En Windows una Red Wirelesses Ad-Hoc es  red temporal que se crea usando la tarjeta de red inalámbrica del equipo y que permite que otros dispositivos inalámbricos se conecten a esta, creando un grupo de trabajo que nos deja compartir recursos.
En Windows 7 crear una red Ad-Hoc es extremadamente sencillo y aunque hay varios caminos el más sencillo es  abrir el “Centro de redes y recursos compartidos” para esto hacemos clic derecho sobre el icono de la tarjeta de red en nuestra barra de tareas, y luego hacemos clic en “Administrar redes inalámbricas”.

Lo que hará que aparezca la ventana de administración de Redes Inalámbricas, donde tenemos que hacer clic sobre el botón de la esquina superior izquierda de agregar, para agregar manualmente la conexión a una red en una nueva ventana.

En la nueva ventana de “Conectarse manualmente a una red inalámbrica” elegimos “Crear una Red Ad-Hoc” y finalmente en el último paso establecemos el nombre de la red, el protocolo de seguridad y la clave de seguridad.
Los otros dispositivos que se conectaran a nuestra red solo tienen que buscar la red inalámbrica y conectarse a ella usando el protocolo y clave que asignamos.





En Windows 8 este proceso es diferente ya que el “Centro de Redes y  Recursos Compartidos” no trae la opción de “Administrar Redes Inalámbricas” por lo que es necesario realizar los pasos a través de la línea de comandos, usando el comando Netsh.
Netsh es una utilidad de línea de comandos que nos ofrece varias opciones para la configuración de una red. Entre las principales opciones que se pueden realizar, están la posibilidad de ver, modificar, administrar y diagnosticar la configuración de una red.
Así que lo primero será abrir la ventana de línea de comando pero ejecutándola como administrador,  en Windows 8, vamos tocamos la esquina superior derecha de la pantalla para aparecer la opción de búsqueda y allí escribimos CMD

 
Una vez ubicada la aplicación de línea de comandos hacemos clic derecho y buscamos en la parte de abajo la opción para ejecutar como administrador.


Al abrir la ventana de línea de comandos ejecutamos la instrucción “netsh wlan show drivers”  para verificar que nuestra tarjeta de red soporte crear una red ad-hoc para que esto sea possible debemos leer que “Red Hospedada admitida” este en  Sí.


Luego escribimos la instrucción: netsh wlan set hostednetwork mode=allow ssid= [Nombre de la red] key= [Contraseña]

Y finalmente iniciamos la red con el commando: netsh wlan start hostednetwork y la detenemos con netsh wlan stop hostednetwork

lunes, 4 de febrero de 2013

Conteo Condicional en SQL Server


Conteo Condicional en SQL Server
Recientemente he tenido la necesidad de hacer un conteo de datos condicional en SQL Server, lo que en Excel es un CONTAR.SI, aprovechando la ocasión decidí documentar con ejemplo la tarea, para futuras oportunidades
Suponiendo contamos con una tabla llamada ProductList, con los datos que se muestran en la imagen de abajo y  necesitamos contar los productos mayores a 0 de la categoría “Condiments”.
Pues bien antes de realizar el conteo debemos tener en cuenta que la función COUNT() de SQL Server si la usamos como COUNT(*) contara todas las filas, por ejemplo
SCRIPT
RESULTADO
Select Count(*) from Productlist
 

 
Y si lo que contamos es un campo de la tabla por ejemplo COUNT(UNITPRICE), como en el ejemplo UNITPRICE tiene valores nulos en productos de la categoría “Seafood” estos no los contara.
SCRIPT
RESULTADO
Select Count(UnitPrice) from Productlist
 

 
Ahora como lo que necesitamos es contar los productos mayores que 0 de la categoría “Condiments”,  si volviéramos Nulos los valores en 0 no los contaría, para esto usaremos la instrucción CASE
 
SCRIPT
RESULTADO
Select Categoryname, Productname,
(CASE Unitprice WHEN 0 THEN NULL ELSE Unitprice END) as Precio
from Productlist
where Categoryname='Condiments'
 
 

 
Finalmente usamos, nuevamente la función COUNT, pero esta vez encerrando la función CASE creada.
SCRIPT
RESULTADO
Select count(CASE Unitprice WHEN 0 THEN NULL ELSE Unitprice END) as Total
from Productlist
where Categoryname='Condiments'
 

 
Fuente de apoyo para la intruccion CASE