Duties depend greatly on the organization you work for. In some organizations, you only do admin type tasks, in others programming is also a part of your day and in a small organization like the one I work for, I do admin, programming, sales prooposals, research, management of other programmers, and other duties as assigned.
Of the purely admin duties, the first and most critial is setting up and managing your backup and recovery plan. This is the thing most likely to get you fired if you mess it up, so it is usually a high priority to the dba too.
Other things you need to do are: develop and maintain a system for assigning security rights for the databases including setting up new users and removing old users (unless the network admin does this), periodically changing the sa password, monitoring performance on a day-to-day basis, fixing perceived performance problems, setting up new databases, applying patches and new releases, making recommendations for new equipment and equipment configurations, setting up and managing replication if you are using it, setting up failover clustering, making sure maintenance tasks such as refreshing indexes are done, setting up alerts to let you know if a problem exists, setting up linked servers, creating DTS packages to import/export data.
You might also get involved in creating stored procedures and user-defined functions, designing database tables and implementing relationships and indexes, implementing business rules through the use of constraints and triggers, implementing table auditing, managing the movement of new or revised objects from development to production, advising user interface programmers on effective ways to access the data or reviewing their SQL code, evaluating commercial software for the organization you work with, testing or setting up test data and test plans, reporting and/or fixing bugs.
I'm sure there's more, just can't hink of it offhand.